2017-08-27 102 views
0

我想用Javascript將HSV轉換爲RGB。將HSV轉換爲RGB無法正常工作Javascript

由於某種原因,輸出不正確。返回的數字是瘋狂的。例如,當傳遞hsv(0, 100, 100)到函數,它返回rgb(25500, -2524500, -2524500);

這顯然不是一個有效的RGB值。

這裏是HSV轉換爲RGB功能:

function HSVtoRGB(h, s, v) { 
    var r, g, b, i, f, p, q, t; 
    if (arguments.length === 1) { 
     s = h.s, v = h.v, h = h.h; 
    } 
    i = Math.floor(h * 6); 
    f = h * 6 - i; 
    p = v * (1 - s); 
    q = v * (1 - f * s); 
    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: Math.round(r * 255), 
     g: Math.round(g * 255), 
     b: Math.round(b * 255) 
    }; 
} 

回答

0

原來,該功能的正常使用。
問題出在我傳入的值。

而不是hsv(50, 100, 100),請使用hsv(50/360, 1, 1)

您必須將色相除以360,而S和V最多爲1,而不是100.