【问题标题】:Triangulation of 3D objects in MatlabMatlab中3D对象的三角剖分
【发布时间】:2017-06-21 16:18:25
【问题描述】:

我需要在 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 三角剖分?我上面的代码有什么错误?

【问题讨论】:

    标签: matlab triangulation delaunay


    【解决方案1】:

    您尝试过的纯基于delaunay 的方法都不能满足您的需求——它们都对输入的完整凸包进行细分,而不仅仅是表面。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 2014-07-29
      • 2015-07-09
      • 1970-01-01
      • 2011-01-24
      • 2015-03-04
      • 2013-08-16
      相关资源
      最近更新 更多