我很难找到一种很好的方法来找出方位角是否在范围之间。
我有一个名为 $bearing
的变量,这需要与 $CompareAngel +-20 degrees
进行比较。
例如,$CompareAngle可以是 90 度,那么下面的代码应该是 true,$bearing beeing 值为 70-110 度。
if($bearing >= $CompareAngle-20 && $bearing <= $CompareAngle+20)
只要$CompareAngle不接近 360/0 点,就可以正常工作。
这意味着,例如,如果$CompareAngle是 10 度,则范围应该是 350-30 度。
但是如果我把它放在上面的行中,它将不起作用,因为它将变为 -10-30。
我可以做if($CompareAngle-20 <0){ do this if()} else{ other if }
但是有没有一种好方法可以在没有一堆if的情况下比较这样的角度/轴承,或者这是不可能的?
这似乎是模运算符可以解决的问题。
if($bearing % 360 >= ($CompareAngle % 360)-20 % 360 && $bearing <= ($CompareAngle % 360) +20
(除以 360 后的余数(基本上所做的是,给定一个值 $bearing$
,尽可能多地减去 360 倍,只要 $bearing > 0
.
您可以计算实际差异。
$diff = abs($bearing - $CompareAngle);
然后像这样检查它是否在您可接受的范围内。
if ($diff <= 20 || $diff >= 340 )