-1

我想计算从点到多边形的距离。

我获取点到线的距离的代码如下:

 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);

该点可以在多边形内部或外部。我无法找到任何有用的示例来查找多边形到点的距离。

4

1 回答 1

0

您找不到此信息并不令我感到惊讶。多边形的面积是有限的,这意味着要计算与它们的距离,您需要在多边形的某处选择一个点作为参考。最简单的解决方案是对多边形使用某种中心度量并对其进行测试,然后它可以像使用欧几里得距离一样简单。如果它有帮助,当您处理 OpenGL 认为是多边形的东西时,那么多边形可以被认为是存在于同一平面上的点的有序集合——这应该会简化寻找中心的过程。

为了更准确地测量距离,您可能需要到多边形上最近点的距离。如果您继续将多边形视为任意边的集合,这将非常复杂,但是如果您将其替换为一些更简单的几何图形(即边界圆、正方形或三角形),则可以大大简化事情。我上面提到的示例可以扩展为通过从到多边形中心的距离中减去半径来给出到边界圆外部的距离。

于 2013-09-02T16:19:51.997 回答