【发布时间】:2012-05-10 08:26:39
【问题描述】:
我有一个关于在 Matlab 中绘制圆柱面的问题。我的数据集由X, Y, Z 坐标的点云和对应的强度值C 组成。
我可以使用scatter3 函数绘制它们:
figure
scatter3(X,Y,Z,8,C)
结果如下图:
但是,我想绘制这个对象的表面而不是点。我已经尝试使用 Delaunay 三角测量来实现这一目标
tri = delaunay(X,Y);
figure
trisurf(tri,X,Y,Z,C,'FaceColor','interp')
正如您从图像中看到的那样,结果不是我想要的,因为三角测量存在困难。在我看来,该算法似乎无法很好地处理我多次获得相同的X 和Y 坐标这一事实。
按照TriRep帮助页面上介绍的示例,我尝试使用以下方法:
dt = DelaunayTri(X,Y,Z);
tr = TriRep(dt, X, Y, Z);
可惜没有成功,因为我在调用 TriRep 函数时收到以下错误消息:
???使用 ==> TriRep 时出错 参数必须是“双矩阵”。
我想我必须限制我的几何形状,我想我通过使用freeBoundary 函数在Example 1 here 中找到了解决方案——尽管我确实需要TriRep 函数的输出来计算这个。这就是我卡住的地方。如您所见,我不是三角测量方法的专家,我非常感谢您提供的任何帮助。谢谢!
【问题讨论】:
标签: matlab 3d plot triangulation delaunay