我使用freeglut在屏幕上绘制一些形状,并希望根据与每个对象关联的值调整其颜色。值范围从0.0
到1.0
,我希望这些值代表亮红色到紫色,数字在可见光谱中线性缩放。
问题是,我需要用RGB颜色代码表示这些颜色代码(每个代码0.0到1.0)。是否有一些简单的方法来实现这一目标?
答案 0 :(得分: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);
}
}