swift - 如何获取与另一点距离最小的线上的点的坐标
问题描述
我现在正在努力解决这个几何问题。
假设我们有一条由点 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]
}
解决方案
C
您可以最小化到直线上一点的平方距离AB
:
(CA + t.AB)² = t²AB² + 2t AB.CA + CA²
最小值是通过
t = - AB.CA / AB²
和
CP = CA + t.AB