我想计算从点到多边形的距离。
我获得指向一条线的距离的代码如下:
float px,py,something,u;
px=x2-x1;
py=y2-y1;
something = px*px + py*py;
u = ((x - x1) * px + (y - y1) * py) /(something);
if( u > 1)
u = 1;
else if (u < 0)
u = 0;
float xx = x1 + u * px;
float yy = y1 + u * py;
float dx = xx - x;
float dy = yy - y;
float dist= (float)Math.sqrt((double)dx*dx +(double) dy*dy);
该点可以位于多边形的内部或外部。我找不到任何有用的例子来查找多边形与点的距离。
答案 0 :(得分:0)
您无法找到此信息并不会让我感到惊讶。多边形具有有限区域,这意味着要计算距离它们的距离,您需要在多边形的某处选取一个点作为参考。最简单的解决方案是使用多边形的一些中心度量并对其进行测试,然后它可以像使用欧氏距离一样简单。如果它有帮助,当你处理OpenGL认为是多边形的东西时,多边形可以被认为是存在于同一平面中的点的有序集合 - 这应该简化了找到中心的过程。
要更准确地测量距离,您可能希望距离多边形上的最近点。如果继续将多边形视为任意边集合,则这非常复杂,但如果用一些更简单的几何(即边界圆,正方形或三角形)替换它,则可以大大简化。我上面提到的例子可以扩展为通过从距离到多边形中心的距离减去半径来给出距边界圆外部的距离。