根据您的示例,您正在尝试查找由其顶点和边定义的平面图的面。
步骤 1.用一对有向边(弧)替换每个无向边,在两个方向上连接顶点。对于每个弧 (v1 -> v2) 找到下一个弧 (v2 -> v3),这样这两个弧的左侧都有相同的面- 这可以通过计算弧与轴之间的角度来完成(例如) OX 并按顺时针(或逆时针)顺序排列它们。将所有弧标记为“未使用”。
第 2 步。拿起任何“未使用”的弧线,然后依次跟随下一条弧线,直到到达初始弧线的原点 - 你会得到一个循环,包围一张脸。您已经找到了一张包含所有弧线/顶点的新面孔。将此循环中的所有弧标记为“已使用”。重复直到没有“未使用”的弧线。
回到你的例子 - 你将有以下弧线:
A -> E, E -> A
A -> D, D -> A
B -> E, E -> B
B -> F, F -> B
C -> D, D -> C
C -> G, G -> C
E -> F, F -> E
E -> G, G -> E
F -> G, G -> F
下一个弧的示例:
- (D -> C) 是 (A -> D) 的下一个弧
- (C -> G) 是 (D -> C) 的下一个弧
- (G -> E) 是 (C -> G) 的下一个弧
- 等等...
这个算法将找到你所有的内部面孔加上一个外部面孔,以循环为界 (A -> E, E -> B, B -> F, F -> G, G -> C, C -> D, D - > A)。您可以忽略这个外部面,但在某些情况下它可能很有用 - 例如,当您是一个给定的点并且您需要找到它相对于整个图形的位置时。