(MATLAB)三维曲面(mesh/surf)

本实验取材于中南大学《MATLAB与科学计算》
今天学习了三维曲面绘制,三维曲面绘制需要用相应的函数是,但是步骤总体包括:

  • 平面网格数据的生成
  • 绘制三维曲面的mesh函数和surf函数
  • fmesh函数和fsurf函数

一、平面网络数据的生成

(1)利用矩阵运算生成

>> x=2:6;
>> y=(3:8)';
>> X=ones(size(y))*x;
>> Y=y*ones(size(x));
>>

(2)利用meshgrid函数生成

[X,Y]=meshgrid(x,y);
其中,参数x,y为向量,存储网格点坐标的X,Y为矩阵

>> x=2:6;
>> y=(3:8)';
>> [X,Y]=meshgrid(x,y);

例子1:绘制空间曲线。

>> x=2:6;
>> y=(3:8)';
>> [X,Y]=meshgrid(x,y);
>> Z=randn(size(X));
>> plot3(X,Y,Z);
>> grid on;
>>

图片
在这里插入图片描述

二、绘制三维曲面的函数

mesh(x,y,z,c)
surf(x,y,z,c)

其中,x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色,

例子:绘制三维曲面图z=xe(-x())-y^2).

>> t=-2:0.2:2;
>> [X,Y]=meshgrid(t);
>> Z=X.*exp(-X.^2-Y.^2);
>> subplot(1,3,1);
>> mesh(X,Y,Z);
>> subplot(1,3,2);
>> surf(X,Y,Z);
>> subplot(1,3,3);
>> plot3(X,Y,Z);
>> grid on
>>

在这里插入图片描述
mesh函数和surf函数的其他调用格式:

mesh(z,c);
surf(z,c);

当x,y省略时,z矩阵的第2维下表当作x轴坐标,z矩阵的第1维下标当作y轴坐标,

>> t=1:5;
>> z=[0.5*t;2*t;3*t];
>> mesh(z);

图片
其他曲面函数公式:

  • 带等高线的三维网格曲面函数meshc
  • 带底座的三维网格曲面函数meshz
  • 具有等高线的曲面函数surfc
  • 具有光照效果的曲面函数surfl

例子:用4种方式绘制函数z=(x-1)2+(y-2)2-1的曲面图,其中x∈[0,2],y∈[1,3]代码

>> [x,y]=meshgrid(0:0.1:2,1:0.1:3);
>> z=(x-1).^2+(y-1).^2-1;
>> subplot(2,2,1);
>> meshc(x,y,z);title('meshc(x,y,z)')
>> subplot(2,2,2);
>> meshz(x,y,z);title('meshz(x,y,z)')
>> subplot(2,2,3);
>> surfc(x,y,z);title('surfc(x,y,z)')
>> subplot(2,2,4);
>> surfl(x,y,z);title('surfl(x,y,z)')
>>

在这里插入图片描述

三、标准三维曲面

(1)sphere函数

[x,y,z]=sphere(n)

(2)cylinder函数

[x,y,z]=cylinder(R,n)

例子:用cylinder函数分别绘制柱面、花瓶和圆锥面

>> subplot(1,3,1);
>> [x,y,z]=cylinder;
>> surf(x,y,z);
>> subplot(1,3,2);
>> t=linspace(0,2*pi,40);
>> [x,y,z]=cylinder(2+cos(t),30);
>> surf(x,y,z);
>> subplot(1,3,3);
>> [x,y,z]=cylinder(0:0.2:2,30);
>> surf(x,y,z);
>>

在这里插入图片描述
例子:用cylinder函数绘制两个相互垂直且直径相等的圆柱面的相交图形

>> [x,y,z]=cylinder(1,60);
>> z=[-1*z(2,:);z(2,:)];
>> surf(x,y,z);
>> hold on
>> surf(y,z,x);
>> axis equal

在这里插入图片描述
(3)peaks函数
多峰函数:
peaks函数的调用格式:

peaks(n)  
peaks(V)
peaks(x,y)
peaks

fsurf函数和fmesh函数

fsurf(funx,funy,funxz,uvlims)
fmesh(funx,funy,funz,uvlims)

其中,funx,funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。uvlims为funx,funy和funz的自变量的取值范围,用4元向量[umin,umax,vmin,vmax]描述默认为[-5,5,-5,5].

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值