查找点在直线上的投影

问题描述

我不太擅长数学,并且我知道还有其他人在问我类似的事情,但是我并不真正理解这些解释。

我的问题是:我有一条由2个点A,B和另一个点X给出的线,我想在线AB上找到一个点,该点代表点X在线AB上的投影。

例如,假设我有A和B的坐标以及点X的坐标,我想按照下面的图找到Y的坐标:

A---Y-------------B
         
    X

解决方法

我将 C 用作 X ,将 D 用作 Y ,以避免与坐标混淆。

制作矢量

AB = (B.X-A.X,B.Y-A.Y)
AC = (C.X-A.X,C.Y-A.Y)

C 投射到 AB 上的最简单形式是:

AD = AB * (AB.dot.AC) / (AB.dot.AB)
D = A + AD

在坐标中:

CF=((B.X-A.X)*(C.X-A.X)+(B.Y-A.Y)*(C.Y-A.Y))/((B.X-A.X)^2+(B.Y-A.Y)^2)
D.X=A.X+(B.X-A.X)*CF
D.Y=A.Y+(B.Y-A.Y)*CF
,

YAB的中间点,可以通过矢量关系获得

Y = t.A + (1 - t).B

暗含

XY = t.XA + (1 - t).XB

现在表示XYAB的正交性,

XY.AB = t.(XA.AB) + (1 - t).(XB.AB) = 0

从中绘制t的值

t = XB.AB / (XB.AB - XA.AB) = XB.AB / AB²

Y之后是第一个关系。