查找角度是否与另一个角度在X度之内

ano*_*ard 8 language-agnostic algorithm geometry angle

我需要一个算法来确定一个角度是否在另一个角度的某个度数范围内.

我的第一个想法是(a-x < b) && (a+x > b),但是当它必须处理从-179到180的环绕角度时它会失败.

在上图中,角度必须介于负边和正边之间的区域(绿色).如何确定角度(红线)是否落在该区域内?

Gra*_*ton 7

试试这个公式:

360-(|a-b|)%360<x || (|a-b|)%360<x
Run Code Online (Sandbox Code Playgroud)

或者,在PHP中:

<?php

$b = 10;
$angle1 = -179;
$angle2 = 180;

$diff = $angle1 - $angle2;
if(abs($diff % 360) <= $b || (360-abs($diff % 360))<=$b) {
  echo "yes";
} else {
  echo "no";
}

?>
Run Code Online (Sandbox Code Playgroud)