我很难找到一种很好的方法来找出轴承是否在这个范围内。
我有一个名为$bearing的变量,这需要与$CompareAngel +-20 degrees进行比较。
例如,$CompareAngle可以是90度,那么下面的代码在$bearing值为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,或者这是不可能的?
发布于 2017-05-23 20:38:43
这似乎是一个模运算符会解决的问题。
if($bearing % 360 >= ($CompareAngle % 360)-20 % 360 && $bearing <= ($CompareAngle % 360) +20
模360 (除以360后的余数)所做的基本工作是,给定一个值$bearing$,尽可能多地减去360乘以$bearing > 0。
发布于 2017-05-23 21:46:12
你可以算出实际的差额。
$diff = abs($bearing - $CompareAngle);然后检查它是否在你可以接受的范围内。
if ($diff <= 20 || $diff >= 340 )https://stackoverflow.com/questions/44144523
复制相似问题