2017-05-23 62 views
0

我有一个问题找到一个很好的方法来找出轴承是否在范围之间。将角度与角度范围比较

我有一个变量叫$bearing,这需要与进行比较。
例如$ CompareAngle可以是90度,那么下面的代码应该是正确的,并且$轴承值为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或者是不可能的?

回答

2

这似乎是模数运算符可以解决的问题。

if($bearing % 360 >= ($CompareAngle % 360)-20 % 360 && $bearing <= ($CompareAngle % 360) +20

什么模360(由360分割后的余数)基本上都被给定一个值$bearing$,减去多次360尽可能只要$bearing > 0

+0

我刚刚测试了代码,它似乎工作。谢谢! – Andreas

0

您可以计算出实际的差异。

$diff = abs($bearing - $CompareAngle); 

然后检查它是否在这样的可接受范围内。

if ($diff <= 20 || $diff >= 340)