【发布时间】:2017-03-18 18:00:59
【问题描述】:
我只是在颜色转换器中偶然发现了这条线,但不知道它有什么作用,也不知道它的名字。你知道吗?
// `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 };
}
原文件:TinyColor.js
【问题讨论】:
-
色相、饱和度、亮度到红绿蓝。
-
颜色转换。更多在这里:en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB,它是部分 (R1, G1, B1) = ...
-
简单数组和括号表示法来读取索引
mod处的数组值。没有什么不寻常的。 -
哦,我明白了,这是一个动态创建的数组,然后选择了第 n 个元素(基于 mod)。在我眼前有太多的数学:D
-
@SörenKlein 稍微扩展一下:它被称为数组字面量,通过括号表示法立即访问。
标签: javascript math colors