比较角度与角度范围

  • 本文关键字:范围 比较 php bearing
  • 更新时间 :
  • 英文 :


我很难找到一种很好的方法来找出方位角是否在范围之间。

我有一个名为 $bearing 的变量,这需要与 $CompareAngel +-20 degrees 进行比较。
例如,$CompareAngle可以是 90 度,那么下面的代码应该是 true,$bearing beeing 值为 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的情况下比较这样的角度/轴承,或者这是不可能的?

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

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

模 360

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

您可以计算实际差异。

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

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

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

相关内容

  • 没有找到相关文章

最新更新