【发布时间】:2014-11-02 19:36:22
【问题描述】:
我遇到了 HSB 颜色问题,不知道如何以正确的方式计算它。
我的色调介于360 和0 之间,如果我从0 得到-1,我得到的值是-1 而不是360。我想我必须用模做一些事情来获得正确的值?!所以我的问题是将一个单位的倍数转换为 0 到 360 之间的数字。有人可以帮我吗?
【问题讨论】:
标签: javascript colors hsb
我遇到了 HSB 颜色问题,不知道如何以正确的方式计算它。
我的色调介于360 和0 之间,如果我从0 得到-1,我得到的值是-1 而不是360。我想我必须用模做一些事情来获得正确的值?!所以我的问题是将一个单位的倍数转换为 0 到 360 之间的数字。有人可以帮我吗?
【问题讨论】:
标签: javascript colors hsb
负色调值相当于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;
}
【讨论】: