我找到一个很好的方法来找出轴承是否在该范围之间。
我有一个名为$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,或者这是不可能的?
答案 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 )