我有一个 HSB 颜色问题,不知道如何以正确的方式计算它。
我在360
and之间有颜色的色调0
,如果我-1
从中0
得到值-1
,而不是360
。我想我必须用模做一些事情来获得正确的值?!所以我的问题是将一个单位的倍数转换为 0 到 360 之间的数字。有人可以帮我吗?
我有一个 HSB 颜色问题,不知道如何以正确的方式计算它。
我在360
and之间有颜色的色调0
,如果我-1
从中0
得到值-1
,而不是360
。我想我必须用模做一些事情来获得正确的值?!所以我的问题是将一个单位的倍数转换为 0 到 360 之间的数字。有人可以帮我吗?
负色调值相当于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;
}