3

我查看了 python-graph 和 boost 图形库的 python 绑定,但没有发现任何与网格双重化相关的内容(对偶的顶点是原始图的面,并通过对偶中的边连接如果它们在原始图中共享一条边)。在我开始重新发明这个轮子之前,有没有我可能忽略的实现?

4

2 回答 2

2

可能有,但实现起来很简单。为此,需要找到使用它的三角形的边。有了这些信息,就可以在三角形之间建立联系。

简单的python实现,三角形(或多边形)是顶点索引列表,边是有序的顶点索引对:

from collections import defaultdict
from itertools import combinations
triangles = [(1,2,3), (2,3,4), (1,3,5), (3,4,5), (5,6,7), (4,5,6)]
# For each edge set triangles containing that edge
edge2trias = defaultdict(list)  # edge (v1,v2) -> list of triangles
for t_ind, ps in enumerate(triangles):
    for edge in zip(ps, ps[1:]+ps[:1]):
        edge2trias[tuple(sorted(edge))].append(t_ind)
# For each edge, set pair(s) of neighbouring triangles
tria2neigh = defaultdict(list)  # triangle index -> list of neighbouring triangles
for edge, trias in edge2trias.iteritems():
    for t1, t2 in combinations(trias, 2):
        tria2neigh[t1].append(t2)
        tria2neigh[t2].append(t1)
于 2013-05-31T08:46:28.830 回答
1

并回答自己的问题 -图形工具的折线图功能 计算图形的对偶。

于 2013-08-12T06:33:41.447 回答