如何找到通过特定点的垂直线

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

我需要找到垂直于另一条线(由它穿过的两个点定义)并与特定点(由其坐标定义)相交的线。我需要计算我需要在垂直于的线和点之间找到的线段的长度。这与求三角形高度的工作原理类似。在下面的示例中,直线将由点定义:A(0, 0)、B(4, 1),其相交点将为 C(-1, 2)。 我知道这可以很容易地用毕达哥拉斯定理计算出来,但当线不是垂直/水平时,它会让我感到困惑。

math geometry 2d
1个回答
0
投票

制作矢量

AB = (abx, aby) = (B.x - A.x, B.y - A.y)
AC = (acx, acy) = (C.x - A.x, 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

D
点是
C
A—B
线上的投影。如果您需要
CD
长度,请获取

CDlen = sqrt((cx-dx)^2+(cy-dy)^2)

(或在某些语言中使用

Math.Hypot
功能)

© www.soinside.com 2019 - 2024. All rights reserved.