我遇到了HSB颜色问题,不知道如何以正确的方式计算它。
我的色调是360
和0
之间的色调,如果我-1
来自0
,我会得到值-1
而不是360
{1}}。我想我会用modulo做一些事来获得正确的价值观?所以我的问题是将一个单位的倍数转换为0到360之间的数字。有人可以帮助我吗?
答案 0 :(得分:1)
负色调值相当于360 + value
,这意味着-10相当于350.要实现这种行为,请执行以下操作:
var val = -10; // or whatever your value is
var hue = (val + 360) % 360 // --> 350
对正值也正确,val = 380 - > hue = 20.如果您处理的值大于+/- 360,只需在执行%360之前添加720
(或1080,1440,...)而不是360
。
我们可以将它包装在一个方便的函数中,无论你输入什么,它总是返回0到360之间的值:
function adjustHue(val) {
if (val < 0) val += Math.ceil(-val / 360) * 360;
return val % 360;
}