Math 如何检测由n条线段包围的所有区域?

Math 如何检测由n条线段包围的所有区域?,math,geometry,triangular,Math,Geometry,Triangular,在二维平面中绘制3条线段时,它可能会组成一个三角形 如何找到由n条线段生成的所有多边形?有什么有效的算法可以使用吗 输入:每条线段的第一个和最后一个点坐标(例如点A=(x_A,y_A),B=(x_B,y_B),…,I=(x_I,y_I)) 输出:所有生成的多边形和生成线集(例如{A,B,C,F},{A,C,E,F,H},{E,F,I},{E,F,I,H},{G,H,I}) 我找到了答案 第1步。计算每条线段的所有交点。 参照“”,计算给定线段的所有交点。它是O(n^2),但可以通过使用空间树(

在二维平面中绘制3条线段时,它可能会组成一个三角形

如何找到由n条线段生成的所有多边形?有什么有效的算法可以使用吗

输入:每条线段的第一个和最后一个点坐标(例如点A=(x_A,y_A),B=(x_B,y_B),…,I=(x_I,y_I))

输出:所有生成的多边形和生成线集(例如{A,B,C,F},{A,C,E,F,H},{E,F,I},{E,F,I,H},{G,H,I})

我找到了答案

第1步。计算每条线段的所有交点。

参照“”,计算给定线段的所有交点。它是O(n^2),但可以通过使用空间树(例如R树、四叉树)升级为O(n logn)

第2步。找到所有顺时针循环。

参照“”,计算每个顶点的连接边角度,并对其排序。完成后,遍历每一条边,并通过“转向最左边的边”策略找到所有循环

这将找到所有循环,但也将找到不需要的外部循环。与其他都是逆时针方向的回路相比,外部回路是顺时针方向的,因此请使用“”中编写的方法删除顺时针方向的回路