C++ HSV(0..255)到RGB(0..255)
可能重复:C++ HSV(0..255)到RGB(0..255),c++,algorithm,graphics,colors,color-picker,C++,Algorithm,Graphics,Colors,Color Picker,可能重复: 有人能解释一下当HSV值为0到255时如何将其转换为RGB吗?而且 ,我尝试在C++中做这件事。 在这里找到它 编辑: 我曾经写过一个颜色选择器,并且习惯于理解所有这些。当时,我看着photoshop颜色选择器,试着在十字线周围移动,观察hsv/rgb数字的变化,并找出它们是如何工作的。在这种情况下,i似乎可以确定主色调指向它的位置。色调的值实际上是以红色开始,以红色结束的循环中完全饱和的颜色的程度。有一个三角形,每个点代表R,G和B,其中0度是R。在R和G之间是黄色,在R和B之
有人能解释一下当HSV值为0到255时如何将其转换为RGB吗?而且 <参考>,我尝试在C++中做这件事。 在这里找到它 编辑:
我曾经写过一个颜色选择器,并且习惯于理解所有这些。当时,我看着photoshop颜色选择器,试着在十字线周围移动,观察hsv/rgb数字的变化,并找出它们是如何工作的。在这种情况下,
i
似乎可以确定主色调指向它的位置。色调的值实际上是以红色开始,以红色结束的循环中完全饱和的颜色的程度。有一个三角形,每个点代表R,G和B,其中0度是R。在R和G之间是黄色,在R和B之间是洋红色,在B和G之间是青色。我们一共有6种颜色。这6种颜色是从案例0到案例5。您不了解从-转换为RGB的哪一部分?简单地在这里重新发布一个算法是没有意义的,请告诉我们哪个部分不起作用/你不理解它@Ravadre,我希望用更“蹩脚的术语”来描述它。维基百科以比必要的更复杂的方式呈现公式而臭名昭著。@Kerrek SB,粗鲁真的是必要的吗?@detunized,事实上,不是。通常为(0…1)至(0…255),etc@judeclarke:所以,缩放它:如果你有(0…255),只需将你的值除以255,然后它们就会变成(0…1),那么你就可以使用这些算法了!很抱歉,我应该发布我希望HSV(0..255)到RGB(0..255)的结果,并对其进行了很好的解释。输出已经在0..255范围内。通过将h、s、v分别除以255,可以将算法的输入范围转换为0..255。但是坦率地说,如果你没有看到这一点,你就有一个更大的问题@drhirsch,粗鲁是没有帮助的。我看不出输入是如何的(0..255),因为代码中没有解释。例如,为什么会出现这样的情况?每个案例都有什么作用?如果你看一看上面提到的维基百科文章,你就会认出这六个案例。不要告诉我,我应该用外行的方式向你解释这篇文章,因为你不想读它——我会认为这很粗鲁。
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];
}