求点到直线上的投影

问题描述 投票:0回答:1

我不太擅长数学,我知道还有其他人向我提出类似的问题,但我不太明白其中的解释。

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

例如,假设我有AB的坐标,对于点C,我想根据下图找到D的坐标:

A---D-------------B
         
    C
javascript math geometry
1个回答
4
投票

制作矢量:

AB = B - A
AC = C - A

或者坐标:

AB = (abx, aby)
AC = (acx, acy)

地点:

abx = B.x - A.x
aby = B.y - A.y
acx = C.x - A.x
acy = C.y - A.y

使用点积将C投影到A—B的最简单形式是:

AD = AB * (AB dot AC) / (AB dot AB)
D = (dx, dy) = A + AD

或者坐标:

coeff = (abx*acx + aby*acy) / (abx*abx+aby*aby)
dx = A.x + abx * coeff
dy = A.y + aby * coeff
© www.soinside.com 2019 - 2024. All rights reserved.