Algorithm 具有正交边(凸或凹或有孔)的多边形内的最远点
我有一组表示单个形状的非相交矩形。所有矩形边要么垂直,要么水平。有些矩形是相邻的,有些是不相交的。该集合是通过从单个其他矩形裁剪出类似方向的矩形而得到的。如何查找距离新形状边缘最远的所有点 所谓最远,我指的是给定连接多边形Algorithm 具有正交边(凸或凹或有孔)的多边形内的最远点,algorithm,geometry,polygon,computational-geometry,Algorithm,Geometry,Polygon,Computational Geometry,我有一组表示单个形状的非相交矩形。所有矩形边要么垂直,要么水平。有些矩形是相邻的,有些是不相交的。该集合是通过从单个其他矩形裁剪出类似方向的矩形而得到的。如何查找距离新形状边缘最远的所有点 所谓最远,我指的是给定连接多边形p内的点a(因此我们忽略所有不包含a的不相交多边形;给定非相交多边形将只有一个)使P内没有点B,从B到P边缘上任何点的最小距离大于与A相同的最小距离 这就是我想我必须要做的: 将相邻矩形分组 将多个相邻矩形转换为单个不规则多边形,该多边形可以是凸多边形,也可以是凹多边形,可能包
p
内的点a
(因此我们忽略所有不包含a
的不相交多边形;给定非相交多边形将只有一个)使P
内没有点B
,从B
到P
边缘上任何点的最小距离大于与A
相同的最小距离
这就是我想我必须要做的:
- 并行执行步骤1和2可能更容易
- 问题:如何测试点是否在多边形内
- 答复:
O[n*log(n)]
适用于凸多边形或凹多边形,与孔无关。为多边形的边构造voronoi图。不幸的是,生成了一组无序的线段(直线或抛物线)。在确定最大内切圆之前,将集合组织成图形结构。有关fortune算法的详细概述,请参阅O(n)
适用于没有孔的简单多边形(凸面或凹面)。它看起来很复杂,所以我决定跳过这个O(n)
仅适用于凸多边形,因此不适用于我的问题。有关更多信息,请参阅O[n*log(n)]
。有关更多信息,请参阅O(n^4)
。见和
- 线,线,平行:中轴是一条线,它代表一组可能的最大内接圆
- 线,线,不平行:中轴是一条线。通常,此线的端点必须至少有两条反射线连接回多边形。可能的最大内接圆以反射线最长的端点为中心
- 直线、点:中轴为抛物线。如上所述,使用反射线确定可能的最大内切圆的中心。(*)
- 点,点:同上。(*) 不知道最后两个