利用切片平面探索三维体
切片液体流数据
切片平面(不一定是平面)是基于切片所在区域中的三维体数据的值进行着色的曲面。切片平面可用于探测三维体数据集,以找到感兴趣的区域位置,然后可以利用其他类型的图对这些区域进行可视化(请参阅 slice
示例)。当同时使用其他绘图方法时,切片平面还可用于在三维体范围内添加视觉环境(有关示例,请参阅 coneplot
和使用向量数据显示流线图)。
可使用 slice
函数创建切片平面。本示例对 flow
生成的三维体进行切片。
1.调查数据
使用以下命令生成三维体数据:
[x,y,z,v] = flow;
通过查找坐标数据的最小值和最大值,确定三维体的范围。
xmin = min(x(:)); ymin = min(y(:)); zmin = min(z(:)); xmax = max(x(:)); ymax = max(y(:)); zmax = max(z(:));
2.创建与 X 轴呈一定角度的切片平面
要创建与某个坐标区平面呈一定角度的切片平面,请先定义一个曲面,然后将其旋转到所需角度。本示例使用与三维体具有相同 x 和 y 坐标范围的曲面。
hslice = surf(linspace(xmin,xmax,100),... linspace(ymin,ymax,100),... zeros(100));
将曲面绕 x 轴旋转 -45 度,保存曲面 XData
、YData
和 ZData
以定义切片平面,然后删除曲面。
rotate(hslice,[-1,0,0],-45) xd = get(hslice,'XData'); yd = get(hslice,'YData'); zd = get(hslice,'ZData');
delete(hslice)
3.绘制切片平面
绘制旋转后的切片平面,将 FaceColor
设置为 interp
以便使用图窗颜色图进行着色,并将 EdgeColor
设置为 none
。添加光源后,将 DiffuseStrength
增加到 .8
以使平面更亮。
colormap(turbo) h = slice(x,y,z,v,xd,yd,zd); h.FaceColor = 'interp'; h.EdgeColor = 'none'; h.DiffuseStrength = 0.8;
将 hold
设置为 on
,并在 xmax
、ymax
和 zmin
处再添加三个正交切片平面,形成第一个平面(按一定角度对三维体进行切片所得)的环境。
hold on hx = slice(x,y,z,v,xmax,[],[]); hx.FaceColor = 'interp'; hx.EdgeColor = 'none'; hy = slice(x,y,z,v,[],ymax,[]); hy.FaceColor = 'interp'; hy.EdgeColor = 'none'; hz = slice(x,y,z,v,[],[],zmin); hz.FaceColor = 'interp'; hz.EdgeColor = 'none';
4.定义视图
要按正确的比例显示三维体,请将数据纵横比设置为 [1,1,1]
(daspect
)。调整坐标轴,使之紧密切合三维体的轮廓 (axis
)。坐标区的角度可以先行使用 rotate3d
进行选择,以确定最佳视图 (view
)。
放大场景以获取更大的三维体视图 (camzoom
)。相比默认的正交投影,选择 perspective
投影类型可使长方体的比例更自然 (camproj
)。
daspect([1,1,1]) axis tight view(-38.5,16) camzoom(1.4) camproj perspective
5.添加光照并指定颜色
在场景中添加光源可使四个切片平面之间的边界更清晰,因为每个平面与光源之间形成不同的角度 (lightangle
)。选择只有 24 种颜色的颜色图(默认值为 64)可以产生明显的渐变,从而有助于表现三维体内的变化。
lightangle(-45,45) colormap(turbo(24))
修改颜色映射介绍了如何修改数据与颜色之间的映射。
修改颜色映射
当前颜色图决定切片平面的颜色。这使您能够通过以下方式更改切片平面的着色:
更改颜色图
更改数据值与颜色之间的映射
例如,假设您只对 -5 到 2.5 之间的数据值感兴趣,并且希望所用的颜色图将低值映射到红色、将高值映射到蓝色(即与默认的 turbo
颜色图相反)。
1.自定义颜色图
colormap(flipud(turbo(24)))
2.调整颜色范围
调整颜色范围以突出感兴趣的特定数据范围。将颜色范围调整到 -5 到 2.4832,以便将所有小于 -5 的值映射到同一种颜色(原来的数据范围是从 -11.5417 到 2.4832)。
clim([-5,2.4832])
在 R2022a 之前: 使用 caxis
调整颜色范围,它具有与 clim
相同的语法和参量。
3.添加颜色栏
添加颜色栏,以便为数据到颜色的映射提供对照标准。
colorbar('southoutside')