2017-02-04 65 views
0

我需要在Matlab中对石块(聚集体)点云进行表面三角测量。为此,我在笛卡尔坐标系中有x,y,zMatlab中3D对象的三角剖分

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

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

您尝试的纯基于delaunay的方法都不会做你想做的 - 它们都镶嵌输入的完整凸包,而不仅仅是曲面。

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

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