MATLAB:使用Delaunay从点云创建曲面

时间:2014-07-02 19:14:35

标签: matlab triangulation delaunay

在MATLAB中,我加载了以下点云:

load tetmesh

这会将Xtet加载到工作区中。因此,我执行散点图,这就是结果:

scatter3(X(:,1), X(:,2), X(:,3))

blah

我还以下列方式调用trisurf,它给了我:

trisurf(tet, X(:,1), X(:,2), X(:,3))

this

如果我不使用tet,并尝试使用Delaunay构建我自己的连接列表:

tri = delaunay(X(:,1), X(:,2), X(:,3))
trisurf(tri, X(:,1), X(:,2), X(:,3))

我明白了:

blah

这不是tet生成的图像附近的任何地方。据我所知,生成的四面体也不符合Delaunay标准。

我的问题是:是否有可能仅从tet生成X这样的连接列表?

2 个答案:

答案 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的三个不同值如下所示:

coeff 1 coeff 0.5 coeff 0.1