compute_adjacency_list()
方法用于计算TriangleMesh的面邻接列表。该列表包含与每个三角形相邻的相邻三角形的索引。
def compute_adjacency_list(self)
该方法没有任何参数。
该方法返回一个 List[List[int]]
类型的值,该值是一个包含所有面邻接列表的嵌套列表。每个三角形都由三个顶点定义,并通过此列表中的索引进行引用。
列表中的第i个元素包含与第i个三角形相邻的三角形的索引。如果该三角形与其他任何三角形都没有共享顶点,则该列表中的第i个元素应该是一个空列表。
import open3d as o3d
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector([
[0.0, 0.0, 0.0],
[0.0, 0.0, 1.0],
[0.0, 1.0, 0.0],
[0.0, 1.0, 1.0],
[1.0, 0.0, 0.0],
[1.0, 0.0, 1.0],
[1.0, 1.0, 0.0],
[1.0, 1.0, 1.0]
])
mesh.triangles = o3d.utility.Vector3iVector([
[0, 1, 2],
[1, 3, 2],
[4, 6, 5],
[5, 6, 7],
[0, 2, 4],
[4, 2, 6],
[1, 5, 3],
[5, 7, 3],
[0, 4, 1],
[4, 5, 1],
[2, 3, 6],
[6, 3, 7]
])
adj_list = mesh.compute_adjacency_list()
print(adj_list)
# Output:
# [[], [2, 5, 10], [0, 3, 6], [1, 5, 7], [5, 6, 10],
# [1, 3, 4, 8, 9, 10], [2, 4, 7, 8, 11], [3, 6, 11],
# [4, 5, 6, 9], [5, 8, 11], [0, 4, 9], [6, 7, 10]]
在这个例子中,我们创建了一个TriangleMesh,它由8个点和12个三角形组成。每个三角形由三个点的索引定义。compute_adjacency_list() 方法返回一个嵌套列表,其中包含每个三角形的面邻接列表。我们打印了这个列表,并且输出结果如上所示。
根据这个输出结果,我们可以推断出每个三角形与哪些相邻的三角形共享边界面。例如,第0个三角形是与相邻三角形0、3、6相邻,而第1个三角形只与相邻三角形2、5、10相邻。