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