Answers:
您只需要将vector AP
投影到vector上AB
,然后将结果矢量添加到point即可A
。
这是一种计算方法:
A + dot(AP,AB) / dot(AB,AB) * AB
此公式适用于2D和3D。实际上,它适用于所有方面。
a.x*b.x+a.y*b.y+a.z*b.z ...
与向量之间的每个坐标操作一样简单。
这是在python中执行此操作的快速简便的方法:
from numpy import *
def ClosestPointOnLine(a, b, p):
ap = p-a
ab = b-a
result = a + dot(ap,ab)/dot(ab,ab) * ab
return result
使用浮点数;如果向量包含整数,则除法将为整数除法,结果将不正确。
/dot(ab,ab)
是多余的