Nat*_*ley 5 geometry computational-geometry
给定不规则多边形和该多边形内的点,如何确定多边形中哪条边最接近该点?

我可能必须对多边形内的一大组点(例如50-200点)运行此计算.
Jas*_*ore 17
该算法的每个步骤都是线性时间(O(n)).
以下是每个步骤的基本公式:
计算与多边形的每条边相切的直线上的最近点.
p1 = {x1, y1}.p2 = {x2, y2}.p3 = {x3,y3}.u是p1和p2之间的距离的百分比,即需要找到在由P1和P2,形成的线的点,使得p1+u(p2-p1)=线路上的点(最靠近P3这点和P3之间的线段也恰好垂直于通过p1和p2的直线).u = ((x3 - x1)(x2 - x1)+(y3 - y1)(y2 - y1)) / ((x2 - x1)^2 + (y2 - y1)^2)pu = {xu, yu}xu = x1 + u (x2 - x1)yu = y1 + u (y2- y1)pu = {xu, yu}计算每个线段(多边形的边缘)上的最近点到相关点.
该点pu只是线段上最近的点0 <= u <= 1.否则,线段的适当端点是与该点最近的点.因此,对于pu, p1, p2, and u在上述步骤中计算的每个步骤,请执
Let pc = {xc, yc} 被表示为多边形边缘的线段上与所讨论的点的最近点.IF u<0 THEN pc = p1ELSE IF u>1 THEN pc = p2ELSE pc = pu计算从每个线段上的最近点到相关点的距离.
p3和之间的距离pc=`sqrt((x3 - xc)^ 2 +(y3 - yc)^ 2)找到最小距离.具有最小距离的相应多边形是答案.
这是一个图表,可以帮助您了解此帖中的要点和术语:

....