Javascript 将HSV转换为RGB不起作用

Javascript 将HSV转换为RGB不起作用,javascript,Javascript,我正在尝试用Javascript将HSV转换为RGB 由于某些原因,输出不正确。返回的数字太疯狂了。例如,当将hsv(0100100)传递给函数时,它返回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,

我正在尝试用Javascript将HSV转换为RGB

由于某些原因,输出不正确。返回的数字太疯狂了。例如,当将
hsv(0100100)
传递给函数时,它返回
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)
    };
}

结果表明,该功能工作正常。
问题在于我传递的价值观

使用
hsv(50/360,1,1)
代替
hsv(50,100,100)

必须将色调除以360,S和V最多为1,而不是100。

短代码: