将角度与角度范围进行比较

时间:2017-05-23 20:35:48

标签: php bearing

我找到一个很好的方法来找出轴承是否在该范围之间。

我有一个名为$bearing的变量,需要将其与$CompareAngel +-20 degrees进行比较 例如$ CompareAngle可以是90度,那么下面的代码应该是真实的,其中$ bearing being值为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 个答案:

答案 0 :(得分:2)

这似乎是模运算符会解决的问题。

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

在给定值$bearing$的情况下,模数360(除以360后的余数)基本上做的是,只要$bearing > 0减去360次。

答案 1 :(得分:1)

您可以计算实际差异。

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

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

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