1.5作图与动画——matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现可视化,这是其它语言所不能比拟的。1.5.2三维图形一.三维空间曲线plot3——最基本的三维图形指令指令:plot3(x,y,z,s)x,y,z是同维数的矢量或矩阵,每组x,y,z构成一个点的坐标,各点依次相联,形成一条曲线。利用矩阵可以同时画多条空间曲线。s是线型、颜色和标志的参数。例1:x,y,z均为矢量时t=0:0.01:15;x=sin(t);y=cos(t);z=t;plot3(x,y,z),axissquare;gridonx1=[0.5,0.5,0,0.5];y1=[0.5,0.5,0,0.5];z1=[1,0,0,1];x2=[0.5,0.5,1,0.5];y2=[0.5,0.5,0,0.5];z2=[1,0,0,1];x3=[0,1];y3=[0,0];z3=[0,0];plot3(x1,y1,z1,x2,y2,z2,x3,y3,z3)Kjqx.mkjqx02.mqzb.m例2:x,y,z均为矩阵时[x,y]=meshgrid([-2:0.1:2]);Z=x.*exp(-x.^2-y.^2);plot3(x,y,Z)gridon例3:指定曲线图的线型、颜色及标记t=0:pi/20:10*pi;plot3(sin(t),cos(t),t,':*r'),gridtitle('kjqx'),xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t')二.画球面、椭球面和柱面Sphere(N)画一个半径为1,有N条经线的球面。Cylinder(R,N)画由母线R旋转产生的柱面,柱面上有N条母线Ellipsoid(XC,YC,ZC,XR,YR,ZR,N)画椭球面Qtzt.msubplot(1,2,1)sphere(6),axisequalsubplot(1,2,2)t=0:0.1*pi:2*pi;[X,Y,Z]=cylinder(4*cos(t));mesh(X,Y,Z)axissquare三.网线和表面图1、三维绘图数据的产生在matlab中,曲面是用xy平面上各个格点的Z坐标来定义的。画曲面前先要生成三维绘图数据。(1)利用meshgrid函数生成平面网格坐标矩阵。再利用函数关系求Z.x=a:△x:b;y=c:△y:d;[X,Y]=meshgrid(x,y);Z=f(x,y)(2)利用双峰函数peaks[x,y,z]=peaks(n)分别创建x,y,z三个均为n×n阶的方阵peaks(n)直接使用peaks函数所创建的矩阵绘制表面图2、指令mesh(Z)绘制分别以m×n阶矩阵Z的行数和列数为x和y坐标([1:m],[1:n]),以Z的对应元素值为Z坐标的三维网线图,只有定义点的连线有颜色mesh(X,Y,Z)绘制分别以矩阵X、Y、Z的元素值为坐标的三维网线图。meshc将网线图与等高线图绘制在一起meshz在绘制网线图时画出零基准平面waterfall绘制瀑布线图wangxian01.msurf(Z)绘制分别以m×n阶矩阵Z的行数和列数为x和y坐标([1:m],[1:n]),以Z的对应元素值为Z坐标的三维表面图,连线及其之间的面积有颜色。surf(X,Y,Z)绘制分别以矩阵X、Y、Z的元素值为坐标的三维表面图。biaomiantu.m四、视角view(az,el)az方位角,单位是度,取值为-180∽180,计算起点是负y轴。el俯视角,取值为-90∽90,计算起点是xy平面.三维观察时默认az=-37.5,el=30二维观察时默认az=0,el=90五、色彩的调制、渲染和光照控制1.色彩指令colormap(Map)Map是色图矩阵或色图函数色图矩阵是m×3的数值矩阵,它的每一行是RGB三元组。[000]黑色[100]红色[010]蓝色[001]绿色色图函数pink粉色copper铜色hot暖色cool冷色flag四色旗prism光谱色springsummerautumnwintersetu.m2、渲染方式:shadingflat平坦式渲染shadinginterp插补式渲染shadingfaceted平坦式加黑色网格线3、控制光照效果surfl(X,Y,Z,S,K)S用以确定光源的位置,K是用光方式surfl(X,Y,Z)默认方式ts.m六、四维数据的表现为了实现三维数据的可视化表现,Matlab提供了绘制四维切片图函数slice。Slice(X,Y,Z,v,xi,yi,zi)其中X,Y,Z为使用meshgrid生成的三维数据网格,v为所绘制图形的函数,xi,yi,zi为切片的位置Slice(v,xi,yi,zi)若X,Y,Z为使用meshgrid生成的m×n×j的三维数据网格,则以[1:m]为x坐标,以[1:n]为y坐标,以[1:j]为z坐标,v为所绘制图形的函数,xi,yi,zi为切片的位置ys.mys02.m1.5.4动画1、彗星轨迹图Comet(x,y,p)彗长为p*length(y)的二维彗星轨迹,p的默认值为0.1Comet3(x,y,z,p)彗长为p*length(y)的三维彗星轨迹,p的默认值为0.1ddqxn.mhuixing.m2.影片动画制作影片动画的步骤:①M=moviein(n),定义一个n列的矩阵M,以存储n帧画面,每列对应一帧。②M(:,j)=getframe,依次将n帧画面存入矩阵M,通常用for循环完成。getframe函数可截取每一幅画面信息而形成一个很大的列向量,该向量可保存到一个变量中,显然,保存n幅图就需一个大矩阵。③movie(M,k,FPS),将n帧画面演示k次,每秒FPS帧,k默认为一次,FPS默认为12。3.实时动画Matlab用图形对象的‘EraseMode’属性来实现在保持背景图案的条件下擦除旧对象,显示新对象。‘EraseMode’的属性:normal重绘整个显示区none不作擦除,直接在原图上绘图xor擦除旧对象的点绘制新对象的点background把旧对象的颜色变为背景色当新对象的属性修改以后,用drawnow刷新屏幕Wave1.mwave2.m作业:1、使用plot3绘制三维曲线,t=0:pi/50:10*pi,x=e-t/15sin(2t),y=e-t/15cos(2t),z=t2、绘制peaka函数的4种网线图。3、演示p96页的程序ts.m4、用cylinder函数绘制表面图,t=0:pi/20:2*pi,母线R=2+sin(t).设置色彩、渲染方式和光照。