【发布时间】:2011-02-22 22:28:20
【问题描述】:
给定平面上的四个点A,B,X,Y,我希望确定以下两个角度中的哪一个更小∢ABX 或∢ABY。
角度∢ABX 定义为BX 的角度,此时AB 被转换为位于开放段(-∞,0] 上。直观地说∢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。
但这对我来说似乎太复杂了。
有更简单的方法吗?
【问题讨论】:
-
请注意,仅当您的位置已经准确知道时,保持准确性才有意义,例如表示为整数或有理数。但还有其他避免平方根的正当理由,即性能。