给定平面中的四个点,A,B,X,Y
,我希望确定以下两个角度哪个更小:∢ABX
或 ∢ABY
。
角度∢ABX
被定义为当AB
被平移到开放线段(-∞,0]
上时,BX
的角度。 直观地说,当说∢ABX
时,我指的是在访问顶点B
后左转得到的角度。
为了保持准确性并最大化性能(代码将在嵌入式系统上运行),我宁愿不使用cos
或sqrt
。
在A=(-1,0),B=(0,0)
的情况下,我可以通过计算矢量X,Y
的点积并观察其符号来比较两个角度∢ABX
和∢ABY
。
在这种情况下,我可以做:
- 确定
ABX
是左转还是右转。 - 如果
ABX
左转,则检查点Y
和A
是否在线段BX
的同一侧。如果它们在同一侧,则∢ABX
小于ABY
。 - 如果
ABX
右转,那么Y
和A
在BX
的同一侧意味着∢ABX
大于∢ABY
。
但这对我来说似乎太复杂了。
有简单些的方法吗?