JS:这个数学运算怎么称呼?

时间:2017-03-18 18:00:59

标签: javascript math colors

我在色彩转换器中偶然发现了这条线,但不知道它做了什么,我也不知道这个名字。你知道吗?



// `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;
&#13;
&#13;

原始文件:TinyColor.js

1 个答案:

答案 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)。