在几何有向图中寻找面

时间:2014-07-31 12:41:59

标签: graph theory

我遇到了处理有向几何图形的一个相当不寻常的问题。想象一下,图表是国家的边界​​。我正在寻找找到面孔的方法。我的图由有向边组成,可以形成周期(但不一定)。 dummy graph

我正在寻找的是左右脸以及每个边缘的左右脸的前身和后继者。

每个面应逆时针构造,这意味着边缘的左侧面总是在内侧,而右侧面在特定面之外。

在一天结束时,面的节点是地理坐标(lat和lon)。

这是我正在寻找的信息(从LeftFace开始......)

+------+-------+-------+----------+-----------+---------------------+--------------------+
| Edge | NodeA | NodeB | LeftFace | RightFace | PredecessorLeftFace | SuccessorRightFace | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E1   | P1    | P2    | A        | C         | E5                  | E2                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E2   | P2    | P3    | A        | C         | E1                  | E6                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E3   | P3    | P4    | A        | B         | E2                  | E8                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E4   | P4    | P5    | A        | C         | E3                  | E5                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E5   | P5    | P1    | A        | C         | E4                  | E1                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E6   | P3    | P6    | B        | C         | E3                  | E7                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E7   | P6    | P7    | B        | C         | E6                  | E8                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+
| E8   | P7    | P4    | B        | C         | E7                  | E4                 | 
+------+-------+-------+----------+-----------+---------------------+--------------------+

1 个答案:

答案 0 :(得分:1)

对于每个有向边,在图中也添加相反的边。比,对于每个(定向)边缘在该方向上找到面部。这意味着,遍历面边缘,以便在每个顶点中选择最左边的相邻边,直到路径返回到起始顶点。要选择最左边的边,需要顶点的2D位置。

选择最左边的示例:从P3到P4(与E3相反)。在P4中有两种可能继续路径,P5和P7。现在检查边缘左侧的角度。 P3-P4-P5约为90deg,P3-P4-P7约为270deg。角度P3-P4-P5小于P3-P4-P7,因此路径中的下一个边缘为E4,路径中的下一个点为P5。

算法:

For each directed edge add opposite edge
While there are edges in graph
  Choose one directed edge
  Find edges that enclose face (on left side) starting from that edge
  Add face to list of faces
  Remove face edges from graph