我正在寻找一种检测一组点/坐标是否有任何相交线的方法。
一点设置,我在地图的叠加层上使用UIBezierPath绘制多边形。这一切都有效。我能够使用点减少算法减少地图点,并且我留下了一个简单的多边形,可以在我的地图上渲染。 FWIW,我正在使用谷歌地图SDK。
我的问题是,用户可以使用自相交线绘制多边形(这对我正在做的事情来说是一个问题)。我需要做三件事之一。
当多边形自我关闭并且终点略微重叠起点时,我主要看到领结。因此,当多边形关闭并渲染到地图上的地图坐标时,我会得到一个与内部API混淆的小蝴蝶结。
那里有什么可以使用地图坐标吗?我已经看到了常规CGPoints的一些修复,但没有什么会采用地图坐标。我更喜欢在我的多边形经过我的多边形之后检查它,因为它留下了更少的点来检查。性能是一个问题,并且不希望直接从UIBezierPath迭代数百个点。任何帮助将不胜感激。
答案 0 :(得分:1)
我不了解Google Maps SDK或UIBezierPath。我假设您在2D平面中给出了一个多边形,并且您希望自动检测多边形与自身相交的位置(如果有)。
也许最简单的方法是检查所有对边是否相交。你可以在O(n 2 )时间检查这一点,其中n是边数,因为有n *(n-1)/ 2对边。对于给定的一对边,这里有详细说明:
没什么特别的,但细节需要注意。
更复杂的算法是平面扫描算法: