2017-08-27 2 views
0

Ich versuche, HSV in RGB mit Javascript zu konvertieren.Konvertieren von HSV zu RGB funktioniert nicht Javascript

Aus irgendeinem Grund ist die Ausgabe nicht korrekt. Die zurückgegebenen Zahlen sind verrückt. Zum Beispiel, wenn hsv(0, 100, 100) an die Funktion übergeben wird, gibt es rgb(25500, -2524500, -2524500);

Das ist offensichtlich kein gültiger RGB-Wert.

Hier ist die Funktion, die HSV in RGB konvertiert:

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) 
    }; 
} 

Antwort

0

Es stellte sich heraus, die Funktion ordnungsgemäß funktioniert.
Die Frage war mit den Werten I vorging in.

Statt hsv(50, 100, 100), hsv(50/360, 1, 1) verwenden.

Sie müssen den Farbton durch 360 teilen, und die S und V sind bis zu 1, nicht 100.