【发布时间】:2018-11-26 05:54:25
【问题描述】:
我正在寻找一种算法来确定 2 个点 (p1, p2) 之间的距离,从它们之间的较小圆弧的角度来看,以已知速度绕圆移动是增加还是减少。
- 我知道 p1 和 p2 的位置(以度/弧度为单位)。
- 我知道两个物体的速度 (piV, p2V) 在一个统一的尺度上。
- 我知道 p1 和 p2 之间的短弧的绝对值,单位为度/弧度(始终为正值)。但是,如果它有帮助,我也可以知道短弧是负值还是正值,从 p1 的角度来看,当 p2 在后面(右)时它是负值,如果 p2 在前面(左),它是正值。李>
- 逆时针移动时速度为正,“逆行”(顺时针移动)时速度为负。
非常感谢任何帮助或指导。
赞!!:
感谢@beta 的评论,这促使我朝着正确的方向前进。我错过了我可以使用 p1 从 p2 的方向已知的事实(无需转换为其他坐标系)。答案很简单:
SIGN((p2V - p1V) * Angle) = (+ if separating, - when closing)
我将其简化为以下 C:
return ((p2V - p1V) * angle) > 0 ? 1 : -1;
如果使用带符号的分离角,如果 p2 从 p1 逆时针(左)为 正,当 p2 从 p1 顺时针(右)时 负,则此方法有效.
感谢大家的考虑和时间!
【问题讨论】:
-
idownvotedbecau.se/noattempt,例如类似于如果从 p2 到 p1 的弧为 speedP1 那么它们正在关闭。现在为其他组合编写逻辑。
-
我刚刚修改了 Rory 的问题。短弧始终称为正值或绝对值。
-
@andreas,我已经多次尝试用 C 来解决它,但是这些算法太复杂了,而且有太多的极端情况,无法在此处发布,而且并不真正相关。我希望有一个更优雅的解决方案,具有更好的三角/几何敏锐度的人可以指出我的方向。
-
如果您正在寻找“trig/geometry acumen”,您应该在 math.stackexchange.com 上询问
-
您知道 P1 领先还是落后于 P2,并且您知道哪个移动得更快。所以有四种情况需要考虑,或者你可以用 XOR 来做。有什么问题?
标签: algorithm math geometry trigonometry