仅将色调转换为 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