从不规则数据绘制曲面

Lee*_*Lee 3 matlab visualization data-visualization surf matlab-figure

我从散乱的数据集中制作填充的轮廓或曲面图.

与其他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;
Run Code Online (Sandbox Code Playgroud)

内圈为空.

在此输入图像描述

我用

tri = delaunay(x,y);
trisurf(tri,x,y,z);  view(2); axis equal off;
Run Code Online (Sandbox Code Playgroud)

制作表面图.

但是,正如您所看到的,内圈被填充.

在此输入图像描述

Sue*_*ver 6

而不是使用导致凸包的Delaunay三角剖分,您将要使用一个alphaShape可以对结果曲面边长度施加限制的方法.

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

A = alphaShape(x(:), y(:), 1);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用对象的alphaTriangulation方法获得三角测量alphaSurface.

[faces, vertices] = A.alphaTriangulation();
zvalue = sum(vertices.^2, 2);
Run Code Online (Sandbox Code Playgroud)

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

plot(A, 'FaceColor', 'interp', 'CData', zvalue)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述