第六讲MATLAB可视化二绘三维图.docx

上传人:b****5 文档编号:8065916 上传时间:2023-01-28 格式:DOCX 页数:18 大小:638.40KB
下载 相关 举报
第六讲MATLAB可视化二绘三维图.docx_第1页
第1页 / 共18页
第六讲MATLAB可视化二绘三维图.docx_第2页
第2页 / 共18页
第六讲MATLAB可视化二绘三维图.docx_第3页
第3页 / 共18页
第六讲MATLAB可视化二绘三维图.docx_第4页
第4页 / 共18页
第六讲MATLAB可视化二绘三维图.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第六讲MATLAB可视化二绘三维图.docx

《第六讲MATLAB可视化二绘三维图.docx》由会员分享,可在线阅读,更多相关《第六讲MATLAB可视化二绘三维图.docx(18页珍藏版)》请在冰豆网上搜索。

第六讲MATLAB可视化二绘三维图.docx

第六讲MATLAB可视化二绘三维图

第六讲MATLAB可视化

(二)绘三维图

【目录】

【正文】

一、三维图形绘制步骤

步骤

典型指令

1

三维曲线数据:

先取一个参变量采样向量然后计算各坐标数据向量

t=pi*(0:

100)/100;

x=f1(t);y=f2(t);z=f3(t);

三维曲面数据:

产生自变量采样向量;由自变量向量产生格点矩阵;计算格点矩阵相对应的函数值矩阵

x=x1:

dx:

x2;y=y1:

dy:

y2;

[X,Y]=meshgrid(x,y);

Z=f(x,y);

2

选定图形窗及子窗位置:

同二维

3

调用三维曲线绘图指令:

线型、色彩、数据点形

plot3(x,y,z,'b-')

调用三维曲面绘图指令

Mesh(X,Y,Z);

4

设置轴的范围与刻度、坐标分隔线

同二维

5

图形注释:

图名、坐标名、图例、文字

同二维

6

着色、明暗、灯光、材质处理

colormap,shading,light,material

7

视点、三度(横、纵、高)比

view,aspect

二、三维绘图基本操作

1、三维线图

用来画三维曲线,三维曲线与一组(x,y,z)坐标相对应的点连接而成。

绘图格式为:

plot3(X,Y,Z,'s')

plot3(X1,Y1,Z1,'s1',X2,Y2,Z2,'s2',...)

(1)X、Y、Z是同维向量时,则绘制以X、Y、Z元素为x、y、z坐标的三维曲线;

(2)X、Y、Z是同维矩阵时,则以X、Y、Z对应列元素为x、y、z坐标绘制多条曲线,曲线条数等于矩阵的列数;

(3)(X1,Y1,Z1,'s1')与(X2,Y2,Z2,'s2')的结构与作用和(X,Y,Z,'s')相同,表示同一指令绘两组以上曲线;

(4)s、s1、s2的意义与二维相同。

【例】绘单条三维曲线

t=(0:

0.02:

2)*pi;%三维坐标用参数方程表示

x=sin(t);y=cos(t);z=cos(2*t);%t为参数,得到三个同维向量

plot3(x,y,z,'b-',x,y,z,'bd');%绘蓝色线和菱形的点

view([-82,58]);%选择观察点

boxon;%显示坐标框

legend('链','宝石')%图例

【例】绘多条三维曲线

t=(0:

0.02:

2)'.*pi;%三维坐标用参数方程表示

x=sin(t);y=cos(t);z=cos(2*t);%t为参数,得到三个同维向量

r=0.1:

0.1:

1;%画系数不同的10条曲线

x=x*r;y=y*r;z=z*r;

plot3(x,y,z);

view([-82,58]);boxon;

2、三维网线图

以网格的形式显示三维图形。

通常使用方形网格,所以网格上的每一格点必需有一三维坐标(x,y,z)与之相对应。

绘图指令如下:

(1)mesh(Z)-以矩阵Z的列下标为x、行下标为y、矩阵的元素为z组成三维网格数据绘制网线图;

(2)mesh(X,Y,Z)-X、Y、Z是同维矩阵,分别以三个矩阵对应位置的元素x、y、z组成三维网格数据绘制网线图;

(3)mesh(X,Y,Z,C)-C为与其他三个矩阵同维,给出每个格点的用色矩阵。

缺省时C=Z。

(色表说明见后)

其中,画z=f(x,y)所代表的网格数据产生如下:

(1)x=x1:

dx:

x2;y=y1:

dy:

y2;

X=ones(size(y))*x;

Y=y*ones(size(x));

(2)x=x1:

dx:

x2;y=y1:

dy:

y2;

[X,Y]=meshgrid(x,y);

然后根据函数求出Z矩阵。

【例】用网线图表现函数

clf;%清图形窗口

x=-4:

4;y=x;%x、y的取值范围都是-4到4

[X,Y]=meshgrid(x,y);%形成采样点矩阵

Z=X.^2+Y.^2;%计算函数值

mesh(X,Y,Z);%绘网格图

colormap(hot);%选用色图

3、三维曲面图

将网线图的网格填色,形成曲面图。

格式为:

surf(Z)、surf(X,Y,Z)、surf(X,Y,Z,C)。

含义同网线图。

【例】用曲面图表现函数

clf;x=-4:

4;y=x;

[X,Y]=meshgrid(x,y);

Z=X.^2+Y.^2;

surf(X,Y,Z);

colormap(hot);

三、透视、镂空和裁切

1、图形的透视

Matlab在绘三维网线图和曲面图时,一般进行消隐处理。

为得到透视效果,用以下命令:

hiddenoff-透视被遮挡的图形

hiddenon-消隐被遮挡的图形

【例】透视效果演示

[X0,Y0,Z0]=sphere(30);%产生单位球面的三维坐标

X=2*X0;Y=2*Y0;Z=2*Z0;%产生半径为2的球面坐标

surf(X0,Y0,Z0);%画单位球面

shadinginterp%对球的着色进行浓淡细化处理

holdon;%绘图保持

mesh(X,Y,Z)%绘大球

colormap(hot);%定义色表

holdoff%取消绘图保持

hiddenoff%产生透视效果

axisequal,axisoff%坐标等轴并隐藏

2、图形的镂空

利用非数(NaN)对图形的剪切处理。

【例】演示利用NaN对图形剪切

t=linspace(0,2*pi,100);%产生参数

r=1-exp(-t/2).*cos(4*t);%旋转母线

[X,Y,Z]=cylinder(r,60);%创建圆柱

ii=find(X<0&Y<0);%确定x-y平面第四象限的坐标

%Z(ii)=NaN;%剪切

surf(X,Y,Z);colormap(spring),shadinginterp

%light('position',[-3,-1,3],'style','local')%设置光源

%material([0.5,0.4,0.3,10,0.3])%设置表面反射

【例】演示利用NaN对图形镂空

P=peaks(30);%Matlab提供的一个典型三维函数

P(18:

20,9:

15)=NaN;%镂空

surfc(P);colormap(summer)%加投影等高线的曲面

light('position',[50,-10,5]),lightingflat

material([0.9,0.9,0.6,15,0.4])

3、图形的裁切

镂空处理不能产生切面,为看清图形需要切的表面,把被切部分强制为○。

【例】表现切面

clf;x=[-8:

0.05:

8];y=x;[X,Y]=meshgrid(x,y);%产生格点数据

ZZ=X.^2-Y.^2;%计算函数值

ii=find(abs(X)>6|abs(Y)>6);%确定超出[-6,6]范围的格点下标

ZZ(ii)=zeros(size(ii));%强制为0

surf(X,Y,ZZ),shadinginterp;colormap(copper)

light('position',[0,-15,1]);lightingphong

material([0.8,0.8,0.5,10,0.5])

四、三维图形的精细控制

1、视点与旋动

(1)视点,即观察点,如下图所示。

Matlab控制视点的命令为:

view([az,el])-通过方位角az、俯仰角el来设置视点,单位是度。

(二维图缺省为0、90度。

三维缺省为37.5、30度)

view([vx,vy,vz])-通过视点的直角坐标点来设定。

(2)图形的旋动即图形的旋转,命令为:

rotate(h,direction,alpha,orgin),其中:

h-被旋转的对象;

direction-方向轴,可用球坐标[theta,phi]或直角坐标[x,y,z]表示;

alpha-按右手法则旋转的角度;

orgin-支点。

【例】旋转指令示例

shg;clf;%图形窗口置前,清除

[X,Y]=meshgrid([-2:

.2:

2]);%取格点坐标

Z=4*X.*exp(-X.^2-Y.^2);%计算函数值

G=gradient(Z);%近似梯度

subplot(1,2,1),surf(X,Y,Z,G)%子图1画曲面

subplot(1,2,2),h=surf(X,Y,Z,G);%子图2画曲面

rotate(h,[-2,-2,0],30,[2,2,0]),colormap(jet)%旋转

2、色彩控制

(1)用色风格函数

colordefC-对屏幕上所有子对象设置缺省值;

colordef(fig,C)-对图形窗fig的所有子对象设置缺省

h=colordef('new',C)-对新图形窗设置

whitebg-使当前图形窗背景色在黑白间切换

whitebg(fig)-切换指定窗

whitebg(C)-使当前图形窗背景色变为C指定的颜色

C

轴背景色

图背景色

轴标色

色图

画线用色次序

White

淡灰

Jet

蓝,深绿,红,青,洋红,黄,黑

Black

jet

黄,洋红,青,红,淡绿,蓝,淡灰

(2)色图

一种色彩用[R,G,B]基色三元行数组表示。

取值在(0,1)之间。

常用颜色的RGB值:

R

G

B

颜色

色符

R

G

B

颜色

色符

0

0

1

蓝色blue

B

1

0

1

洋红Magenta

M

0

1

0

绿色green

G

1

1

0

黄色yellow

Y

1

0

0

红色red

R

0

0

0

黑色black

B

0

1

1

青色cyan

C

1

1

1

白色white

W

Matlab的每一个图形窗里只能有一个色图,色图为m×3的矩阵,m缺省为64。

下表为定义的色度矩阵。

CM

含义

CM

含义

CM

含义

Autumn

红、黄浓淡色

Gray

灰色调

Prism

光谱交错色

Bone

蓝色调浓淡色

Hot

黑-红-黄-白

Spring

青、黄浓淡色

Colorcube

三浓淡多彩交错色

Hsv

红-红饱和色

Summer

绿、黄浓淡色

Cool

青、品红浓淡色

Jet

篮-红饱和色

Winter

篮、绿浓淡色

Copper

纯铜色调线性浓淡色

Lines

采用plot色

White

全白色

Flag

红-白-蓝-黑交错色

pink

淡粉红色图

【例】显示色图

clf

colormap(bone);

colorbar

【例】用MATLAB预定义的两个色图矩阵构成一个更大的色图阵

%产生20×20的典型函数,C为颜色分量,等于函数值

Z=peaks(20);C=Z;

%计算颜色的最大值、最小值和差。

Cmin=min(min(C));Cmax=max(max(C));DC=Cmax-Cmin;

CM=[autumn;winter];%用两个已知的色图构成新的色图

colormap(CM);%给窗口符色图

subplot(1,3,1),surf(Z,C);%子图1画曲面

caxis([Cmin+DC*2/5,Cmax-DC*2/5]);%把色轴范围定义比C小,

colorbar('horiz')%显示水平色度条

subplot(1,3,2),surf(Z,C);

colorbar('horiz')

subplot(1,3,3),surf(Z,C);

caxis([Cmin,Cmax+DC]);

colorbar('horiz')

3、浓淡处理

shadingflat-用一种颜色

shadinginterp-用线性插值成色

shadingfaceted-勾画出网格线

【例】三种浓淡处理方式比较

clf;Z=peaks(20);colormap(jet)

subplot(1,3,1),surf(Z)

subplot(1,3,2),surf(Z),shadingflat

subplot(1,3,3),surf(Z),shadinginterp

五、照明和材质处理

Matlab不指定光照,图形采用强度各处相等的漫射光。

(1)设置光源命令:

light('color',c1,'style',s1,'position',p1)

其中三个参数:

c1-代表光的颜色,用[r,g,b]表示,缺省[111]

s1-无穷远光='infinite',近光='local'

p1-表示[x,y,z],对于远光,表示穿过该点射向原点

对于近光,指光源的位置

(2)设置照明模式:

lightingflat-均匀洒落在图形对象上(缺省)

lightinggouraud-采用插补

lightingphong-计算反射光,效果最好

lightingnone-关闭光源

(3)控制光效果的材质指令:

materialshiny-使对象比较明亮,镜反射大

materialdull-使对象比较暗淡,漫反射大

materialmetal-使对象带金属光泽(缺省模式)

materialdefault-返回缺省模式

material([kakdksnsc])-对反射五要素设置

ka-均匀背景光的强度

kd-漫反射的强度

ks-反射光的强度

n-控制镜面亮点大小

sc-控制镜面颜色的反射系数

【例】灯光、照明、材质指令所表现的图形

clf;

[X,Y,Z]=sphere(40);%球形坐标

colormap(jet)%选定色图

subplot(1,2,1);surf(X,Y,Z);shadinginterp%子图1绘曲面

light('position',[2,-2,2],'style','local')%近白光

lightingphong%照明模式

material([0.5,0.3,0.5,10,0.5])%材质

subplot(1,2,2);surf(X,Y,Z,-Z);shadingflat%子图2绘曲面

light;%用光源1

lightingflat%照明模式

light('position',[-1,-1,-2],'color','y')%用光源2

light('position',[-1,0.5,1],'style','local','color','w')

%用光源3

material([0.4,0.5,0.3,10,0.3])%材质

六、简洁绘图指令

(1)泛函绘图指令

fplot(fname,lims,tol,linespec)其中:

fname-函数字符串,自变量为x

lims-绘图区域,[x1,x2]、[x1,x2,y1,y1]

tol-精度,缺省为2e-3

linespec-线型、色彩、点形

【例】fplot与一般绘图指令的绘图效果比较

[x,y]=fplot('cos(tan(pi*x))',[-0.4,1.4],0.2e-3);

n=length(x);

subplot(1,2,1);

plot(x,y)

title('\fontsize{20}\fontname{隶书}泛函绘图指令效果')

t=(-0.4:

1.8/n:

1.4)';

subplot(1,2,2);

plot(t,cos(tan(pi*t)))

title('\fontsize{20}\fontname{隶书}等分采样绘图')

(2)一元函数简捷绘图指令

ezplot(F,[x1,x2],fig),其中:

F-函数

[x1,x2]-自变量范围,缺省为[-2*pi,2*pi]

fig-指定图形窗

【例】绘

和它的积分

间的图形

symsttao;

y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);

s=subs(int(y,t,0,tao),tao,t);

subplot(1,2,1),ezplot(y,[0,4*pi]);grid

subplot(1,2,2),ezplot(s,[0,4*pi]);grid

title('s=\inty(t)dt')

(3)二元函数简捷绘图指令

【例】在园域上画

的图形

clf

ezsurf('x*y','circ');

shadingflat;

view([-18,28])

【例】使用球坐标参量画部分球壳

x='cos(s)*cos(t)';

y='cos(s)*sin(t)';

z='sin(s)';

ezsurf(x,y,z,[0,pi/2,0,3*pi/2])

view(17,40);shadinginterp;colormap(spring)

light('position',[0,0,-10],'style','local')

light('position',[-1,-0.5,2],'style','local')

material([0.5,0.5,0.5,10,0.3])

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1