有人可以解释当值为0到255时如何将HSV值转换为RGB?另外,
作为参考,我试图用C ++做这件事。
答案 0 :(得分:3)
function hsvToRgb(h, s, v){
var r, g, b;
var i = Math.floor(h * 6);
var f = h * 6 - i;
var p = v * (1 - s);
var q = v * (1 - f * s);
var t = v * (1 - (1 - f) * s);
switch(i % 6){
case 0: r = v, g = t, b = p; break;
case 1: r = q, g = v, b = p; break;
case 2: r = p, g = v, b = t; break;
case 3: r = p, g = q, b = v; break;
case 4: r = t, g = p, b = v; break;
case 5: r = v, g = p, b = q; break;
}
return [r * 255, g * 255, b * 255];
}
编辑:
我曾经写过一个颜色选择器并且习惯了解所有这些。那时候,我看着photoshop颜色选择器,尝试在十字线上移动,观察hsv / rgb数字的变化,并弄清楚它们是如何工作的。在这种情况下,i
似乎定位,此时主要颜色hue指向它。色调的值实际上是循环中完全饱和的色度,以红色开始,以红色结束。有一个三角形,每个点代表R,G和B,其中0度是R.在R和G之间,它是黄色,在R和B之间,它是洋红色,在B和G之间,它是青色。我们共有6种颜色。这6种颜色来自0至5的情况。