寻找点在直线上的投影
Finding the projection of a point onto a line
我数学不是很好,我知道还有其他人问我类似的问题,但我不太明白他们的解释。
我的问题是:我有一条由 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
我数学不是很好,我知道还有其他人问我类似的问题,但我不太明白他们的解释。
我的问题是:我有一条由 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