首页 > 解决方案 > 查找最近的线及其 x,y 位置

问题描述

假设我有以下图表。我知道 A、B、C、D、E 位置(x,y)。我的问题是如何找到与 E 点最近的线。而且我想在点和最近的线之间画一条新线(蓝色)。我怎样才能找到 (x,y) 以便画线?

在此处输入图像描述

标签: mathgeometrylinepoint

解决方案


您需要将点 E 投影到直线 AB 上,确定该投影是否在 AB 段的范围内,并找到投影点的垂线长度。CD 段也一样。

求投影点,得到 AB 和 AE 的方向向量

AB = (B - A)
AE = (E - A)

并使用的标量积查找参数

 t = (AB * AE) / (AB * AB) 

如果 t 不在 0..1 范围内,则段的最近点是端点之一。否则找到投影点和投影长度

P = A + AB * t
Len = length(E - P)

推荐阅读