Matlab中三维物体的三角剖分

时间:2017-02-04 09:32:41

标签: matlab triangulation delaunay

我需要在Matlab中对石头(聚合体)点云进行表面三角测量。为此,我在笛卡尔坐标系中有x,y,z

为了简单起见,我开始使用球形物体。

DT = delaunayTriangulation(x,y,z);
figure
trisurf(DT.ConnectivityList,DT.Points(:,1),DT.Points(:,2),DT.Points(:,3), ...
       'FaceColor','cyan','FaceAlpha', 0.8);

运行代码,结果是: Triangulation of Spherical Object

它也在球体内部形成三角形。在对面或其他地方将一个点连接到另一个点。

此外,delaunayTriangulation()函数对理想化曲面进行三角剖分,不适用于敏感曲面。想想石头表面,它上面有很多不规则之处。

然后我尝试了DelaunayTri()功能。它适用于球体物体,仅三角形表面。但是当尝试更复杂(石头)的形状时,该功能只是理想化了形状而没有考虑到石头的所有突起(不规则)。

tri = DelaunayTri(x,y,z);
[FBtri,FBpoints] = freeBoundary(tri);

figure
trisurf(FBtri,FBpoints(:,1),FBpoints(:,2),FBpoints(:,3), ...
       'FaceColor','cyan','FaceAlpha', 0.8);

freeBoundary()函数从上面的代码中删除时,结果是相同的(理想化的)并在对象内部进行三角测量,这是不可接受的。

最后,我使用了delaunay()函数。甚至没有正确地对球体进行三角测量。

tri = delaunay(x,y,z);
figure
trisurf(tri,x,y,z,'FaceColor','cyan','FaceAlpha', 0.8);

问题:我可以通过哪种功能以及如何(请详细说明)对任何形状的石材表面进行详细的3D三角测量?我的错误超过了代码?

1 个答案:

答案 0 :(得分:1)

你所尝试的基于delaunay的纯方法都不会做你想要的 - 它们都会对输入的完整凸包进行细分,而不仅仅是表面。

从点云重建一般表面不是一项直接的任务。我不相信可以使用内置的MATLAB函数直接完成。

您可能希望查看其他选项,例如CGAL提供的surface-reconstruction工具。