根据不规则数据绘制表面

背风处

我从分散的数据集中制作了一个填充的轮廓或曲面图。

与其他Qs的主要区别在于数据不是凸的。

[r,th] = meshgrid(10:15,0:180);
[x,y] = deal(r.*sind(th), r.*cosd(th));
z = x.^2+y.^2;
scatter(x(:),y(:),[],z(:),'fill'); axis equal off;

内圈为空。

在此处输入图片说明

我用

tri = delaunay(x,y);
trisurf(tri,x,y,z);  view(2); axis equal off;

绘制表面图。

但是,如您所见,内部圆圈被填充。

在此处输入图片说明

Suever

与其使用Delaunay三角剖分法来生成凸包,不如使用,您可以使用alphaShape来对所得曲面边缘的长度施加限制。

您可以指定Alpha属性(通过指定第三个输入),属性是最大边长的倒数。对于您的示例,我选择了Alpha1。

A = alphaShape(x(:), y(:), 1);

然后,您可以使用对象alphaTriangulation方法来进行三角剖分alphaSurface

[faces, vertices] = A.alphaTriangulation();
zvalue = sum(vertices.^2, 2);

或者您可以使用对象plot方法alphaShape

plot(A, 'FaceColor', 'interp', 'CData', zvalue)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章