【发布时间】:2018-12-14 16:19:45
【问题描述】:
我正在研究将 hsv 转换为 rgb 颜色空间的算法,并在 wikipdia 上找到了这个。 https://en.wikipedia.org/wiki/HSL_and_HSV。 我在这里找到了这个算法的实现。https://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c。
但据我所知,两者是如何相关的,以及这些计算背后的数学原理是什么。
这里是代码
/**
* Converts an HSV color value to RGB. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSV_color_space.
* Assumes h, s, and v are contained in the set [0, 1] and
* returns r, g, and b in the set [0, 255].
*
* @param Number h The hue
* @param Number s The saturation
* @param Number v The value
* @return Array The RGB representation
*/
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];
}.
我想了解它背后的逻辑以及用于推导转换算法中使用的这些特定值的数学。
【问题讨论】:
标签: javascript colors rgb hsv color-theory