【发布时间】:2014-01-21 11:28:27
【问题描述】:
正如你可以看到下面的示例图片,我的问题是如何确定由一系列点形成的多边形。
在左图中,点的序列是{A, B, C, D, E, A},所以它只是形成了1个多边形{A, B, C, D, E}。
在图片的右侧,点序列是{A, B, C, D, E, F, A}。它创建了 2 个多边形 {A, F, G} 和 {B, C, D, E, G},其中 G 是 AB 线和 FE 线的交点。
我不仅对多边形的数量感兴趣,还想知道从中创建的多边形信息(多边形的一系列点)。
此算法将在移动设备中实时使用,因此它必须足够快才能进行计算。哦,这一系列的点将由用户的拖动触摸点产生。
假设:
- 仅由 2 个共线点组成
- 它并不总是闭合链多边形。比如右图,点序列是{A, B, C, D, E, F},没有边FA。
我一直在思考解决方案,为了寻找交叉点,我坚持使用 O(N^2) 解决方案,N = 边数。我可以从中进行的优化是保持某些区域内的线组,所以我只是最小化可以相互计算的总线。
至于提取形成什么多边形的解决方案,我还是卡住了。
【问题讨论】:
-
你有坐标,对吧?
-
假设是什么?它总是一个封闭的多边形链吗?
-
共线点不超过两个?
-
@BartoszMarcinkowski:是的,我有坐标,它总是一个封闭的多边形链
-
@VikramBhat:好吧,为了简化问题,是的,不超过 2 个共线点