比较角度与角度范围
Posted
技术标签:
【中文标题】比较角度与角度范围【英文标题】:Compare angle with angle range 【发布时间】:2017-10-23 23:31:15 【问题描述】:我很难找到一种确定轴承是否在范围之间的好方法。
我有一个名为$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 的情况下比较像这样的角度/方位,或者那是不可能的?
【问题讨论】:
【参考方案1】:这似乎是模运算符可以解决的问题。
if($bearing % 360 >= ($CompareAngle % 360)-20 % 360 && $bearing <= ($CompareAngle % 360) +20
模 360(除以 360 后的余数)的基本作用是,给定一个值 $bearing$
,尽可能多地减去 360,只要 $bearing > 0
。
【讨论】:
我刚刚测试了代码,它似乎可以工作。谢谢!【参考方案2】:您可以计算实际差异。
$diff = abs($bearing - $CompareAngle);
然后像这样检查它是否在你可以接受的范围内。
if ($diff <= 20 || $diff >= 340 )
【讨论】:
以上是关于比较角度与角度范围的主要内容,如果未能解决你的问题,请参考以下文章