首页 > 解决方案 > 如何获取与另一点距离最小的线上的点的坐标

问题描述

我现在正在努力解决这个几何问题。

假设我们有一条由点 A(x1,y1) 和点 B(x2,y2) 定义的线,我们还有一个点 C(x3,y3)。

用 SWIFT 编写的什么函数可以给我与直线距离最小的点的坐标 (X,Y)?换句话说,直线上的点是垂直线段与另一点的交点。

func getCoordsOfPointsWithSmallestDistanceBetweenLineAndPoint(lineX1: Double, lineY1: Double, lineX2: Double, lineY2: Double, pointX3: Double, pointY3: Double) -> [Double] {
    // ???
    return [x,y]
}

标签: swifttrigonometrycomputational-geometry

解决方案


C您可以最小化到直线上一点的平方距离AB

(CA + t.AB)² = t²AB² + 2t AB.CA + CA²

最小值是通过

t = - AB.CA / AB²

CP = CA + t.AB

推荐阅读