Pet*_*son 6 language-agnostic math numbers
让我们假设我们有一个数字圆,范围从-180到180,看起来像这样:
180/-180
***
*** ***
90 *** *** -90
*** ***
***
0
Run Code Online (Sandbox Code Playgroud)
圆的一部分总是沿顺时针方向扫过.如何判断一个数字是在扫描间隔的内部还是外部?
在以下示例I/O中,前两个数字表示间隔,第三个数字是要检查的数字.如果点(包含)在区间内,则输出为true,否则为false.
2 4 6
False
2 4 4
True
90 -90 0
False
90 -90 -180
True
Run Code Online (Sandbox Code Playgroud)
tom*_*gic 14
将数字从0到359归一化.考虑参数a,b和c(在a - > b的扫描范围内是c). 正如克里斯坎宁安所指出的,你也可以归一化到-180到+179; 见下面的讨论.标准化的重要部分是确保只有一个数字指的是圆上的每个点.
如果(a <= b)再返回(c >= a && c <= b)
否则你已经横扫0点而应该回归 (c >= b || c <= a)(c >= a || c <= b)