标识联合多边形的原始边缘
我有很多多边形,将所有这些多边形合并后,我得到一个新的大多边形。联合算法是一个黑匣子,使用了我无法控制的第三方库过程,我也不希望从进度中提取任何信息。
对于那个巨大的联合多边形的每个边缘,我有什么有效的方法可以知道,哪个属于较小多边形的哪个边缘?
解决该问题的一种蛮力方法是将联合的多边形的每个边与每个较小的多边形进行比较,但这将是非常低效的。还有其他更有效的技术吗?
我的直觉告诉我,尽管我完全不知道如何执行此操作,但扫掠线算法可能会在这里有所帮助。
编辑:小npolygon可以重叠,因此并集多边形可以包含位于小多边形边缘的点,但是这些点可能不是原始多边形的顶点。
屏幕截图如下所示:
没有找到相关结果
已邀请:
3 个回复
伞腹
和
的绝对值中的较大者为1)。然后将所有边缘存储到一个哈希中,该哈希的键是那些向量,其值是该向量的边缘数组。 (如果边缘很多,则可以考虑使用间隔树作为边缘。) 现在给定组合多边形上的一条边,您可以找出它的向量,在哈希表中查找,并且在原始多边形中通常只有少量具有该精确向量的边,所以也不太可能很难通过它们,找出哪些重叠。 请注意,虽然此解决方案可以让您相当有效地找到边缘沿边界延伸的情况,但会漏掉多边形仅在一个角触及组合多边形的边界的情况。希望对您来说无关紧要。
谦响局豢报
催备南菠亨
个边,在输出多边形中有
个边。要创建树
,需要搜索边缘overlapping5ѭ的重叠。总体为
。 注意:如果在2个初始多边形中使用整个边缘,则在输出多边形边界中不使用整个边缘。这样,您可以从四叉树中删除重复的边。不必要。 可以采用其他方式。创建输出多边形边的四叉树,并搜索初始多边形的每个边。运行时间是
,这是更快的。但是如果您将来需要,可以使用高级方法从输入面中提取更多信息。