测试数字是否在圆形间隔内

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)