给定一组线条,您如何找到所有线条所包围的区域?

时间:2014-01-02 05:13:38

标签: algorithm

如果您获得了一组线对,您如何找到所有线对(如果存在)所包含的区域数量?例如,如果我有一对行:

((0,0),(0,10))& ((10,0),(10,10))

((0,0),(10,0))& ((0,10),(10,10))

你将如何找到所有这些线所包围的区域(在这个简单的情况下,它将是由点(0,0),(10,0),(10,10)和(0)定义的方形,10)。

哪些算法可能指向我解决这个问题的方向?

编辑:线条不会始终触及两端或相互交叉。如果存在一对不与任何其他线相交并且不在边缘处接触的线,则可以得出结论,该组线对没有被所有线包围的区域。 / p>

EDIT2:采取以下几行:

对1:((0,0),(10,0))& ((0,10),(10,10))

对2:((0,0),(0,10))& ((10,0),(10,10))

对3 :((2,0),(2,10))& ((8,0),(8,10))

这三对线的封闭区域是由点(2,0),(2,10),(8,10)和(8,0)定义的区域。然而,凸包算法将返回值(0,0),(10,0),(10,10)和(0,10)。

2 个答案:

答案 0 :(得分:1)

编辑:看起来凸壳不是解决方案。

只是为了确保我理解你的问题:这张图片中的红色区域是你想要的吗? enter image description here

答案 1 :(得分:0)

查找所有线对中保留在线段内的所有交点。如果没有小于4的点,则找不到封闭的形状。

如果找到4个点,则使用这些点剪切线条。使用填充填充以获得包含在点中的图形区域。