如何遍历 RGB 中的可见色谱

How do I iterate through the visible spectrum of colours in RGB?

本文关键字:RGB 何遍历 遍历      更新时间:2023-10-16

我正在使用freeglut在屏幕上绘制一些形状,并希望根据与每个对象相关的值调整它们的颜色。这些值的范围从0.01.0,我希望这些值代表鲜红色到紫色,数字在可见光谱中线性缩放。

问题是,我需要用 RGB 颜色代码表示这些(每个颜色代码为 0.0 到 1.0)。有没有一些简单的方法来实现这一点?

感谢您的评论,我不知道HSV。我在网上找到了以下内容:

void pSetHSV( float h, float s, float v ) {
    // H [0, 360] S and V [0.0, 1.0].
    int i = (int)floor(h/60.0f) % 6;
    float f = h/60.0f - floor(h/60.0f);
    float p = v * (float)(1 - s);
    float q = v * (float)(1 - s * f);
    float t = v * (float)(1 - (1 - f) * s);
    switch (i) {
        case 0: glColor3f(v, t, p);
        break;
        case 1: glColor3f(q, v, p);
        break;
        case 2: glColor3f(p, v, t);
        break;
        case 3: glColor3f(p, q, v);
        break;
        case 4: glColor3f(t, p, v);
        break;
        case 5: glColor3f(v, p, q);
    }
}

来源: http://forum.openframeworks.cc/t/hsv-color-setting/770