在MATLAB中,我加载了以下点云:
load tetmesh
这会将X
和tet
加载到工作区中。因此,我执行散点图,这就是结果:
scatter3(X(:,1), X(:,2), X(:,3))
我还以下列方式调用trisurf
,它给了我:
trisurf(tet, X(:,1), X(:,2), X(:,3))
如果我不使用tet
,并尝试使用Delaunay构建我自己的连接列表:
tri = delaunay(X(:,1), X(:,2), X(:,3))
trisurf(tri, X(:,1), X(:,2), X(:,3))
我明白了:
这不是tet
生成的图像附近的任何地方。据我所知,生成的四面体也不符合Delaunay标准。
我的问题是:是否有可能仅从tet
生成X
这样的连接列表?
答案 0 :(得分:4)
点集的Delaunay三角剖分保证按照定义填充其凸包 。因此,显示的输出完全符合预期。此外,曲面细分中的所有元素都会满足the Delaunay 'empty-sphere' criterion。
给定一组点重建曲面的过程称为曲面重建。这样的问题通常不适合,对于给定的点集通常可以进行各种非唯一的重建。已经开发了许多启发式方法,在这方面,CGAL这样的包可能对您有用。
答案 1 :(得分:1)
尝试:
load tetmesh
coeff = 1;
tri = triangulation(boundary(X, coeff), X);
trisurf(tri); colormap(jet);
coeff
的三个不同值如下所示: