如何确定一个值是否落在圆的特定角度范围内?

时间:2019-02-13 14:44:35

标签: geometry range

我正在尝试从HSL色轮上的特定范围内选择随机颜色。确定该角度值是否超过圆的360/0点时,确定该角度值是否落在圆的角度范围内的最佳方法是什么?

例如,如果我需要选择355到5度之间的随机值。因此,在此示例中,1是可接受的值,但180则不是。

除了检查值是否在355-360和0-5之间之外,还有其他更简便的方法吗?

3 个答案:

答案 0 :(得分:0)

在这种情况下,检查if angle <=5 or angle >= 355

更简单

通常情况下,检查角度a是否在中间值m和半角度h(范围m-h..m+h)的范围内,以解决周期性等问题,一个可以使用表达式

if cos(a - m) > cos(h)

enter image description here

答案 1 :(得分:0)

将所有角度归一化为[0°, 360°)范围。如果允许的扇区逆时针在ab范围内,并且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