2017-08-27 2 views
0

JavascriptでHSVをRGBに変換しようとしています。HSVをRGBに変換することができませんJavascript

何らかの理由で出力が正しくありません。返される数字は狂っています。たとえば、関数にhsv(0, 100, 100)を渡すと、rgb(25500, -2524500, -2524500);

が返されます。これは明らかに有効な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

が判明し、機能が正常に動作します。ここでは

は、RGBにHSVを変換する関数です。
問題は、渡していた値になりました。

hsv(50, 100, 100)の代わりに、hsv(50/360, 1, 1)を使用してください。

色相を360で除算する必要があり、SとVは100ではなく1までです。

関連する問題