Matlab 中 3D 对象的三角剖分
Triangulation of 3D objects in Matlab
我需要在 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三角剖分?我上面的代码有什么错误?
None 您尝试过的纯粹基于 delaunay
的方法都可以满足您的要求——它们都镶嵌了完整的 convex-hull 输入,而不仅仅是表面。
从 point-clouds 重建一般曲面不是 straight-forward 任务。我不相信可以直接使用 built-in MATLAB
函数来完成。
您可能希望查看其他选项,例如 CGAL 提供的 surface-reconstruction 工具。
我需要在 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三角剖分?我上面的代码有什么错误?
None 您尝试过的纯粹基于 delaunay
的方法都可以满足您的要求——它们都镶嵌了完整的 convex-hull 输入,而不仅仅是表面。
从 point-clouds 重建一般曲面不是 straight-forward 任务。我不相信可以直接使用 built-in MATLAB
函数来完成。
您可能希望查看其他选项,例如 CGAL 提供的 surface-reconstruction 工具。