我正在尝试从HSL色轮上的特定范围内选择随机颜色。确定该角度值是否超过圆的360/0点时,确定该角度值是否落在圆的角度范围内的最佳方法是什么?
例如,如果我需要选择355到5度之间的随机值。因此,在此示例中,1是可接受的值,但180则不是。
除了检查值是否在355-360和0-5之间之外,还有其他更简便的方法吗?
答案 0 :(得分:0)
在这种情况下,检查if angle <=5 or angle >= 355
通常情况下,检查角度a
是否在中间值m
和半角度h
(范围m-h..m+h
)的范围内,以解决周期性等问题,一个可以使用表达式
if cos(a - m) > cos(h)
答案 1 :(得分:0)
将所有角度归一化为[0°, 360°)
范围。如果允许的扇区逆时针在a
到b
范围内,并且c
是要测试的角度,则条件为
(a < b and a < c < b) or (a > b and b < c < a)
答案 2 :(得分:0)
您可以将它向后移动一个偏移量(在您的情况下为355度),然后对360取模,并与范围(在您的情况下为10度)进行比较
((x - 355) % 360) < 10
但是,某些语言对负数的模数给出否定答案,因此向上移动而不是向下移动(并提防负x)可能更可靠
((x+5) % 360) < 10