【发布时间】:2018-01-25 04:02:27
【问题描述】:
作为输入,我们只有一组段,这里是一个例子:
[AB] = [(0, 0), (0, 4)] ; [BC] = [(0, 4), (2, 6)]
[CD] = [(2, 6), (4, 0)] ; [DA] = [(4, 0), (0, 0)]
[CE] = [(2, 6), (5, 6)] ; [EF] = [(5, 6), (5, 3)]
[FG] = [(5, 3), (3, 3)] ; [HI] = [(2, 1), (4, 5)]
[JK] = [(1, 3), (2, 3)] ; [KL] = [(2, 3), (1, 1)]
[LJ] = [(1, 1), (1, 3)]
(对不起,我尽力了,但我的图像有点模糊)
我需要找到所有单独的区域。从上图中,我将有 3 个不同的区域,JKL、CEFG 和 {ABCD, JKL}:
注意不做任何区域的segment会被忽略(如[HI]),一个区域不能被segment分割,例如:
我可以用一些完全没有效率的意大利面条式代码轻松完成它,但在这样做之前,您对我可以开始研究的算法有任何想法吗?我正在寻找尽可能高效的东西......
【问题讨论】:
-
线条是否有可能相交,例如如果 H 低于 AD 则 GH 与 AD 相交?
-
找出所有连通图
-
“不能按段分割”是什么意思?
-
我有几个段作为输入,这些段通过相互交叉创建了一些多边形。我的问题是让这些多边形形成的区域。 @m69 如果线相交它会创建一个新点([HG] 和 [AD] 的交点)。 @Singh 绝对不是一个独立的解决方案,但可能是一个好的开始,我会继续努力... @Surt 我的意思是,如果一个区域被一个段划分,我会单独保留 2 个子区域而不是一个
标签: algorithm performance area processing-efficiency