资源描述:
《MATLAB教程三维图形》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、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;gridonx
2、1=[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:指定曲线图的线型
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
4、,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(
5、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坐标的三维表面图,
6、连线及其之间的面积有颜色。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]蓝色[0
7、01]绿色色图函数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,y
8、i,zi)其中X,Y,Z为使用meshgrid生成的三维数据网格,v为所绘制图形的函数,xi,yi,zi为切片的位置Slice(v,xi,yi,zi)若X,Y,Z为使用meshgrid生成的m×n×j的三维数据网格,则以