问题描述
我不太擅长数学,并且我知道还有其他人在问我类似的事情,但是我并不真正理解这些解释。
我的问题是:我有一条由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
,
Y
是AB
的中间点,可以通过矢量关系获得
Y = t.A + (1 - t).B
暗含
XY = t.XA + (1 - t).XB
现在表示XY
和AB
的正交性,
XY.AB = t.(XA.AB) + (1 - t).(XB.AB) = 0
从中绘制t
的值
t = XB.AB / (XB.AB - XA.AB) = XB.AB / AB²
Y
之后是第一个关系。