matlab使用教程(91)—等值面和等值顶的作用

1.使用等值面连接相等的值

1.1液体流数据中的等值面

可以使用 isosurface 和 patch 命令创建等值面。

本示例在 flow 生成的三维体内创建等值面。使用以下命令生成三维体数据:

[x,y,z,v] = flow;

要选择等值,请确定三维体数据中值的范围。

min(v(:))
ans =
   -11.5417
max(v(:))
ans =
   2.4832

通过研究,您可以选择能够揭示有用数据信息的等值。选择等值后,使用它们创建等值面:

  • 使用 isosurface 生成可直接传递给 patch 的数据。

  • 根据三维体数据的梯度重新计算曲面法线,以产生更好的光照特性 (isonormals)。

  • 将补片的 FaceColor 设置为红色并将 EdgeColor 设置为 none,以生成平滑、明亮的曲面。

  • 调整视图并添加光照(daspectviewcamlightlighting)。

    hpatch = patch(isosurface(x,y,z,v,0));
    isonormals(x,y,z,v,hpatch)
    hpatch.FaceColor = 'red';
    hpatch.EdgeColor = 'none';
    daspect([1,4,4])
    view([-65,20])
    axis tight
    camlight left; 
    lighting gouraud
    

2.使用等值顶为可视化绘图添加环境

2.1什么是等值顶?

等值顶是切合等值面范围的平面,为等值面提供视觉环境。等值顶显示等值面内部的横截面视图,它为等值面提供一个端顶

下面两张图说明了等值顶的用法。第一张图是没有等值顶的等值面。

第二张图显示了为同一个等值面添加等值顶后的效果。

2.2等值顶的其他应用

2.2.1定义等值顶

等值顶与等值面一样,都是以 patch 图形对象的形式创建的。可以使用 isocaps 命令生成要传递给 patch 的数据。例如:

patch(isocaps(voldata,isoval),...
   'FaceColor','interp',...
...'EdgeColor','none')

在值 isoval 处为标量三维体数据 voldata 创建等值顶。您应该使用相同的三维体数据和等值来创建等值面,以确保等值顶的边切合等值面。

如果将补片的 FaceColor 属性设置为 interp,则着色方案会将等值顶经过的数据值映射到颜色图条目。您还可以设置其他补片属性来控制等值顶上的光照和着色效果。

2.2.2为等值面添加等值顶

此示例说明如何在使用等值顶时设置着色和光照特性。有五个基本步骤:

1.准备数据

此示例使用随机 (rand) 数据的三维数组来定义三维体数据。然后对数据进行平滑处理 (smooth3)。

data = rand(12,12,12);
data = smooth3(data,'box',5);
2.创建等值面并设置属性

使用 isosurface 和 patch 创建等值面并设置着色和光照属性。减少反射光的 AmbientStrengthSpecularStrength 和 DiffuseStrength,以补偿为了提供更均匀的光照而使用的两个光源的亮度。

重新计算等值面的顶点法线,以产生更平滑的光照 (isonormals)。

isoval = .5;
h = patch(isosurface(data,isoval),...
   'FaceColor','blue',...
   'EdgeColor','none',...
   'AmbientStrength',.2,...
   'SpecularStrength',.7,...
   'DiffuseStrength',.4);
isonormals(data,h)
3.创建等值顶并设置属性

使用与等值面相同的数据和等值定义 isocaps。指定插补着色并选择合适的颜色图,从而为蓝色等值面提供较默认颜色图 (colormap) 更好的对比色。

patch(isocaps(data,isoval),...
   'FaceColor','interp',...
   'EdgeColor','none')
colormap hsv
4.定义视图

将数据纵横比设置为 [1,1,1],以便按正确的比例显示 (daspect)。消除坐标区内的空白并将视图设置为三维(axis tightview)。

daspect([1,1,1])
axis tight
view(3)
5.添加光照

为了添加非常均匀的光照,同时又能利用光源在形状上制造可见的细微变化的能力,本示例使用了两个光源,分别位于相机的左右两侧 (camlight)。使用 Gouraud 光照产生最平滑的颜色变化 (lighting)。

camlight right
camlight left

​​​​​​​

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Matlab是一种强大的科学计算软件,它提供了丰富的功能和工具箱,可以用于数据分析、数值计算、图像处理等多个领域。其中,绘制四维等值面图是Matlab中的一项常见任务。 四维等值面图是在三维空间中绘制的等值面图,其中第四个维度通常通过等值线的颜色或高度来表示。在Matlab中,可以使用以下步骤来绘制四维等值面图: 1. 准备数据:首先,需要准备包含四个维度数据的矩阵。通常,前三个维度表示空间坐标,第四个维度表示某种属性或数值。 2. 创建网格:使用meshgrid函数创建一个三维网格,用于定义等值面图的坐标。 3. 绘制等值面:使用contour3函数或contourf函数绘制等值面图。contour3函数会在三维空间中绘制等值线,而contourf函数会填充等值线之间的区域。 4. 设置颜色映射:可以使用colormap函数设置等值面的颜色映射,以将第四个维度的数值映射到不同的颜色。 5. 添加标题和标签:可以使用title、xlabel和ylabel函数添加图表的标题和坐标轴标签。 下面是一个示例代码,演示如何使用Matlab绘制四维等值面图: ```matlab % 准备数据 x = linspace(-2, 2, 50); y = linspace(-2, 2, 50); z = linspace(-2, 2, 50); [X, Y, Z] = meshgrid(x, y, z); W = X.^2 + Y.^2 - Z.^2; % 第四个维度数据 % 绘制等值面图 figure; contour3(X, Y, Z, W, 'LevelStep', 0.1); colormap jet; % 设置颜色映射 colorbar; % 添加颜色条 title('Four-Dimensional Contour Plot'); xlabel('X'); ylabel('Y'); zlabel('Z'); ``` 这段代码会生成一个四维等值面图,其中X、Y、Z轴表示三维空间坐标,W轴通过等值线的高度来表示第四个维度的数值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

配电网和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值