【问题标题】:How to determine if a point approximates an extension to the line between two other points?如何确定一个点是否近似于其他两个点之间的线的延伸?
【发布时间】:2011-12-30 21:25:06
【问题描述】:

我有一个三点 (A,B,C),表示在 2D 空间中移动的对象。对于每个节点,我知道它的位置和速度矢量。所有三个物体都在同一个方向移动。

我想知道点 C (x3, y3) 是否近似于由点 A(x1, y1) 和 B(x2, y2) 形成的直线的“正”延伸。也就是说,我想知道C点是否“领先”于B点(即“A->B->C”而不是“C->A->B”)。

我知道检查点 A、B、C 是否共线会告诉我所有三个点都位于同一条线上,但是,我无法确定点 C 是否近似于直线的正延伸。

任何建议都将受到高度赞赏。

【问题讨论】:

标签: math geometry


【解决方案1】:

您可以计算差分向量 AB 和 BC 的标量积。如果这是肯定的,那么 C 就是你所说的“在 B 前面”。不过,它可能偏向左侧或右侧。

标量积将计算为

(b1-a1)x(c1-b1) + (b2-a2)x(c2-b2). 

当 A=(a1, a2), B=(b1, b2), C= (c1,c2) - 两个向量之间的夹角 cos 乘以向量的长度,cos 为正对于小于 90 度的角度。

【讨论】:

  • 好的,我应该更仔细地阅读。我撤回我的评论。
猜你喜欢
  • 2020-02-03
  • 1970-01-01
  • 2012-08-08
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 2012-11-18
  • 1970-01-01
相关资源
最近更新 更多