假设我们有一个数字圈,范围从 -180 到 180,看起来像这样:
180/-180
***
*** ***
90 *** *** -90
*** ***
***
0
圆的一部分始终沿顺时针方向扫过。如何判断一个数字是在扫描区间之内还是之外?
在以下示例 I/O 中,前两个数字表示间隔,第三个数字是正在检查的数字。如果该点(包含)在区间内,则输出为 true,否则为 false。
2 4 6
False
2 4 4
True
90 -90 0
False
90 -90 -180
True
将数字从 0 标准化到 359。考虑参数 a、b 和 c(c 在 a -> b 的扫描范围内)。 正如 Chris Cunningham 所指出的,您还可以标准化为 -180 到 +179;请参阅下面的讨论。标准化的重要部分是确保只有一个数字代表圆上的每个点。
If (a <= b)
然后返回(c >= a && c <= b)
否则你已经扫过了 0 点并且应该返回 (c >= b || c <= a)
罢工>(c >= a || c <= b)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)