如果您获得了一组线对,您如何找到所有线对(如果存在)所包含的区域数量?例如,如果我有一对行:
((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)。
答案 0 :(得分:1)
编辑:看起来凸壳不是解决方案。
只是为了确保我理解你的问题:这张图片中的红色区域是你想要的吗?
答案 1 :(得分:0)
查找所有线对中保留在线段内的所有交点。如果没有小于4的点,则找不到封闭的形状。
如果找到4个点,则使用这些点剪切线条。使用填充填充以获得包含在点中的图形区域。