我在色彩转换器中偶然发现了这条线,但不知道它做了什么,我也不知道这个名字。你知道吗?
// `hsvToRgb`
// Converts an HSV color value to RGB.
// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
// *Returns:* { r, g, b } in the set [0, 255]
function hsvToRgb(h, s, v) {
h = bound01(h, 360) * 6;
s = bound01(s, 100);
v = bound01(v, 100);
var i = Math.floor(h),
f = h - i,
p = v * (1 - s),
q = v * (1 - f * s),
t = v * (1 - (1 - f) * s),
mod = i % 6,
r = [v, q, p, p, t, v][mod], // <-- It's this line
g = [t, v, v, q, p, p][mod],
b = [p, p, t, v, v, q][mod];
return { r: r * 255, g: g * 255, b: b * 255 };
}
&#13;
原始文件:TinyColor.js
答案 0 :(得分:2)
HSV(色调,饱和度,值)可以显示为&#34; hexcone&#34;,六角锥(参见http://www.efg2.com/Lab/Graphics/Colors/HSVhexcone.gif)。为了将色调转换为RGB样式的颜色,代码首先确定6&#34;切片中的哪一个&#34;它落入的六边形(mod = i % 6
)。所以mod
是一个切片编号,从0到5的整数。你指定的行(以及接下来的两行)根据色调所在的切片从这些数组中查找RGB值。所以如果色调值有我们在切片编号1中,然后RGB将被设置为(q,v,p)。