点和线之间的最小垂直向量

时间:2011-03-08 01:36:22

标签: vector

好的,所以我试图让分离轴定理算法工作(用于碰撞检测),我需要找到点和线之间的最小垂直向量。我不是要求最小垂直距离(我知道如何找到),而是要求与该距离具有相同幅度的矢量,该矢量从线上的任意点和点开始。我知道点的位置,线上的一个点,以及给出线的方向的单位矢量。

我尝试做的是首先找到点和线之间的最小距离。

下一部分令人困惑,但我: 1)在我知道的线上找​​到点和点之间的向量 2)找到线上的点和线上的点之间的向量加上给出线的方向的单位向量 3)取这两个载体的交叉产物(我称之为交叉产品A) 4)取出单位向量的交叉积,给出线的方向和来自交叉积A的向量(我将这个称为交叉积B) 5)标准化的叉积B. 6)按最小距离缩放交叉积B

无论如何,整个尝试都失败了。谁能告诉我我应该如何找到这个载体?

2 个答案:

答案 0 :(得分:27)

如果我理解你的问题,我相信这就是你要找的东西:

P - point
D - direction of line (unit length)
A - point in line

X - base of the perpendicular line

    P
   /|
  / |
 /  v
A---X----->D

(P-A).D == |X-A|

X == A + ((P-A).D)D
Desired perpendicular: X-P

其中句点表示点积和| X-A |意味着规模。

答案 1 :(得分:3)

enter image description here

从上图中可以看出:

q = p + s --> s = q - p = q - (p2-p1) = q + p1 - p2

==> s^ = |q - p2 - p1| / |s|   (unitary vector)

Also:   |s| = |q| sin c = |q|sin(b-a)

b = arcsin (qy / |q|); a = arcsin( p1y / |p1| )

where: |q| = (qx^2 + qy^2)^1/2