好的,所以我试图让分离轴定理算法工作(用于碰撞检测),我需要找到点和线之间的最小垂直向量。我不是要求最小垂直距离(我知道如何找到),而是要求与该距离具有相同幅度的矢量,该矢量从线上的任意点和点开始。我知道点的位置,线上的一个点,以及给出线的方向的单位矢量。
我尝试做的是首先找到点和线之间的最小距离。
下一部分令人困惑,但我: 1)在我知道的线上找到点和点之间的向量 2)找到线上的点和线上的点之间的向量加上给出线的方向的单位向量 3)取这两个载体的交叉产物(我称之为交叉产品A) 4)取出单位向量的交叉积,给出线的方向和来自交叉积A的向量(我将这个称为交叉积B) 5)标准化的叉积B. 6)按最小距离缩放交叉积B
无论如何,整个尝试都失败了。谁能告诉我我应该如何找到这个载体?
答案 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)
从上图中可以看出:
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