我需要在Matlab中对石块(聚集体)点云进行表面三角测量。为此,我在笛卡尔坐标系中有x,y,z
。Matlab中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三角剖分吗?代码上面的错误是什么?