Algorithm 分离区域算法

Algorithm 分离区域算法,algorithm,geometry,Algorithm,Geometry,我们得到一个nxm矩形区域,其中有K条线。每条线都有(x0,y0)-(x1,y1)起始和结束坐标。是否有一些众所周知的算法或资源可以帮助我编写一个程序,找出这些线在矩形区域中形成了多少个独立的区域 如果这是原始矩形区域: 然后有4个单独的区域:所有具有交点的线段形成。您必须彻底计算此图的顶点和边,然后应用 其中 V是垂直计数-交叉点(以及拐角和自由段端点)的数量 E是边数-在交叉点之后形成的分段数 F是面数。 您需要的区域计数是 R = F - 1 因为F考虑了外切面 例如,有16个顶点,10

我们得到一个nxm矩形区域,其中有K条线。每条线都有(x0,y0)-(x1,y1)起始和结束坐标。是否有一些众所周知的算法或资源可以帮助我编写一个程序,找出这些线在矩形区域中形成了多少个独立的区域

如果这是原始矩形区域:
然后有4个单独的区域:

所有具有交点的线段形成。您必须彻底计算此图的顶点和边,然后应用

其中
V是垂直计数-交叉点(以及拐角和自由段端点)的数量
E是边数-在交叉点之后形成的分段数
F是面数。
您需要的区域计数是

R = F - 1
因为F考虑了外切面

例如,有16个顶点,10个水平边和9个垂直边,所以

R = 10 + 9 - 16 + 2 - 1 = 4

请注意,您可以计算阶数为1,2的顶点(角点和自由端),也可以将它们与一个相邻线段一起忽略(简化图形)-这不会影响结果

假设NxM网格是一个图形,其中每个“.”是一个顶点,如果两个顶点并排(在上面、下面、在一边),则两个顶点通过一条边连接。现在,每个单独的区域对应于图中的一个连接组件,您可以使用BFS或DFS算法以O(N*M)为单位计算连接组件的数量

你能谈谈这些线以及它们与该地区的关系吗?例如,它们是直线段还是实际上是无限长的?它们是端点x0、y0-x1、y1的直线段,并且它们位于区域边界内。例如,此矩形有6个独立区域。x0、y0和x1、y1是否始终在区域边界上?对不起,前面的答案是否定的,但它们并不总是在区域边界上,它们可以是从1到边界。长度长度所有线轴是否对齐?您是在处理真实的几何体,还是像图表所示的基于字符的几何体?
R = 10 + 9 - 16 + 2 - 1 = 4