繁体   English   中英

如何遍历RGB中可见的光谱?

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

我正在使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM