0

我有一个 HSB 颜色问题,不知道如何以正确的方式计算它。

我在360and之间有颜色的色调0,如果我-1从中0得到值-1,而不是360。我想我必须用模做一些事情来获得正确的值?!所以我的问题是将一个单位的倍数转换为 0 到 360 之间的数字。有人可以帮我吗?

4

1 回答 1

1

负色调值相当于360 + value,这意味着 -10 相当于 350。要实现该行为,请执行以下操作:

var val = -10; // or whatever your value is
var hue = (val + 360) % 360 // --> 350

这也适用于正值,val = 380 --> hue = 20。如果您正在处理大于 +/- 360 的值,只需添加720(或 1080、1440、...)而不是360在执行 % 360 之前。

我们可以将它包装在一个方便的函数中,无论您输入什么,它总是返回一个介于 0 和 360 之间的值:

function adjustHue(val) {
    if (val < 0) val += Math.ceil(-val / 360) * 360;
    return val % 360;
}
于 2014-11-02T20:51:32.227 回答