1

我很难找到一种确定轴承是否在范围之间的好方法。

我有一个名为 的变量$bearing,需要将其与$CompareAngel +-20 degrees.
例如 $CompareAngle 可以是 90 度,那么下面的代码应该是正确的,$bearing beeeing 值为 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,或者这不可能吗?

4

2 回答 2

2

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

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

模 360(除以 360 后的余数)基本上所做的是,给定一个值$bearing$,尽可能多地减去 360,只要$bearing > 0

于 2017-05-23T20:38:43.793 回答
1

You could calculate the actual difference.

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

Then check if it's in your acceptable range like this.

if ($diff <= 20 || $diff >= 340 )
于 2017-05-23T21:46:12.433 回答