[英]How to convert 3D Obj file to adjacency matrix of a graph matrix
我有一个 3D OBJ 文件,我想将其转换为图形的邻接矩阵。 我知道如果顶点之间有边,相邻矩阵会重复,给 OBJ 文件有面索引,我将如何将其转换为 adjacnet 矩阵?
OBJ 文件给出
顶点和面作为三角形的索引。
所以我想给顶点和面信息一个这样的图:
gr2 = {
1 : [2, 6],
2: [1, 3],
3: [2, 4, 7],
4: [3, 5, 8, 9],
5: [4, 6, 8],
6: [1, 5, 9],
7: [1, 3],
8: [4, 5, 6],
9: [3, 6]
}
所以你想要这个?
cf = open("cube.obj")
vertices = []
faces = []
def valid(a):
return a.strip() != ""
def spl(a, fn):
return list(map(fn, filter(valid ,a.split(" "))))
for l in cf:
if l[0] == "v":
vertices.append(spl(l[2:], float))
if l[0] == "f":
faces.append(spl(l[2:], int))
graph = {}
for f in faces:
for i in f:
if not i in graph:
graph[i] = set()
graph[f[0]] |= set(f[1:])
graph[f[1]] |= set([f[0],f[2]])
graph[f[2]] |= set(f[:2])
for g in graph:
print(g, ":", graph[g])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.