小编spa*_*tia的帖子

在Matlab中插入3D圆柱体的表面

我有一个描述3D圆柱(xx,yy,zz,C)的点云的数据集: 3D点云

我想从这个数据集制作一个表面图,类似于此 在此输入图像描述

为了做到这一点,我想我可以使用TriScatteredInterp常规网格将我的散乱数据插值,然后使用surf以下方法绘制它:

F = TriScatteredInterp(xx,yy,zz);
max_x = max(xx); min_x = min(xx);
max_y = max(yy); min_y = min(yy);
max_z = max(zz); min_z = min(zz);
xi = min_x:abs(stepSize):max_x;
yi = min_y:abs(stepSize):max_y;
zi = min_z:abs(stepSize):max_z;
[qx,qy] = meshgrid(xi,yi);
qz = F(qx,qy);
F = TriScatteredInterp(xx,yy,C);
qc = F(qx,qy);

figure
surf(qx,qy,qz,qc);
axis image
Run Code Online (Sandbox Code Playgroud)

这对于凸面和凹面的物体非常有效,但对于圆柱体则以此结束: 在此输入图像描述

任何人都可以帮助我如何实现更好的情节?

3d matlab matlab-figure

10
推荐指数
1
解决办法
5067
查看次数

Matlab Delaunay点云的三角剖分 - 颜色矩阵

我想创建一个3D表面的图,它跨越[X,Y,Z]点云的所有点.例如,这是我的点云的散点图:

scatter3(X,Y,Z,5,C)

散点图

如您所见,每个数据点都有一个强度值C.

我现在进行三角测量

dt      = DelaunayTri(X,Y,Z); 
[tri Xb]= freeBoundary(dt); 
Run Code Online (Sandbox Code Playgroud)

我得到了三角形表面

figure 
trisurf(tri,Xb(:,1),Xb(:,2),Xb(:,3), 'FaceColor', 'cyan', 'faceAlpha', 0.8);
Run Code Online (Sandbox Code Playgroud)

表面

但是,当我尝试使用时设置表面的颜色

trisurf(tri,Xb(:,1),Xb(:,2),Xb(:,3),C,'EdgeAlpha',0,'FaceColor','interp')
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:"警告:颜色数据未设置为插值着色",这是由于大小C不匹配Xbtri.

如何确保获得正确的插值表面颜色?

matlab triangulation matlab-figure geometry-surface

5
推荐指数
1
解决办法
1万
查看次数