仅将色调转换为 RGB
Convert just a hue into RGB
将 HSV 颜色转换为 RGB 的最简单方法是什么,但饱和度和值 已知 为 100%?
我正在用 Go 编程,但任何算法答案都可以。我的色相值是 0.0 <= hue <= 1.0
原始的,但转换为度数是微不足道的。
示例输出:
hueToRGB(0.0) = (255, 0, 0)
hueToRGB(0.33333) = (0, 255, 0)
hueToRGB(0.4) = (0, 255, 102)
从 wikipedia 实施 "HSV to RGB alternative" 算法,专门针对 s
= v
= 1 给出:
package main
import (
"fmt"
"math"
)
func min3(a, b, c float64) float64 {
return math.Min(math.Min(a, b), c)
}
func hueToRGB(h float64) (float64, float64, float64) {
kr := math.Mod(5+h*6, 6)
kg := math.Mod(3+h*6, 6)
kb := math.Mod(1+h*6, 6)
r := 1 - math.Max(min3(kr, 4-kr, 1), 0)
g := 1 - math.Max(min3(kg, 4-kg, 1), 0)
b := 1 - math.Max(min3(kb, 4-kb, 1), 0)
return r, g, b
}
func main() {
for h := 0.0; h < 1; h += 0.05 {
r, g, b := hueToRGB(h)
fmt.Println(h, r, g, b)
}
}
这给出了 0 到 1 范围内的红色、绿色和蓝色 float64
,但如果您需要的话,应该很容易将它们转换为 uint8
。
将 HSV 颜色转换为 RGB 的最简单方法是什么,但饱和度和值 已知 为 100%?
我正在用 Go 编程,但任何算法答案都可以。我的色相值是 0.0 <= hue <= 1.0
原始的,但转换为度数是微不足道的。
示例输出:
hueToRGB(0.0) = (255, 0, 0)
hueToRGB(0.33333) = (0, 255, 0)
hueToRGB(0.4) = (0, 255, 102)
从 wikipedia 实施 "HSV to RGB alternative" 算法,专门针对 s
= v
= 1 给出:
package main
import (
"fmt"
"math"
)
func min3(a, b, c float64) float64 {
return math.Min(math.Min(a, b), c)
}
func hueToRGB(h float64) (float64, float64, float64) {
kr := math.Mod(5+h*6, 6)
kg := math.Mod(3+h*6, 6)
kb := math.Mod(1+h*6, 6)
r := 1 - math.Max(min3(kr, 4-kr, 1), 0)
g := 1 - math.Max(min3(kg, 4-kg, 1), 0)
b := 1 - math.Max(min3(kb, 4-kb, 1), 0)
return r, g, b
}
func main() {
for h := 0.0; h < 1; h += 0.05 {
r, g, b := hueToRGB(h)
fmt.Println(h, r, g, b)
}
}
这给出了 0 到 1 范围内的红色、绿色和蓝色 float64
,但如果您需要的话,应该很容易将它们转换为 uint8
。