MATLAB和图形设计.doc_第1页
MATLAB和图形设计.doc_第2页
MATLAB和图形设计.doc_第3页
MATLAB和图形设计.doc_第4页
MATLAB和图形设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB在几何图形设计中的应用 0 引言在这个对科学普遍认可的社会,我们现在越来越不难发现,我们的生活中到处都可以发现几何模型存在,周围的任何事物都可以用几何知识来加以模拟,一切有形的东西,都可以运用类似的图形函数表示.而将函数转换为具体的图形,MATLAB起着至关重要的作用,它可以将图形的具体形成过程向人们一一展示,并根据需要,全方位观察图形的功能,本次论文主要介绍了MATLAB是如何将图形展现到我们面前,让我们对一个图形有了更直观、更全面的认识.1 MATLAB在几何图形设计中的基本介绍MATLAB在解析几何图形设计中的应用也就是图形的绘制,可分为二维图形的绘制,三维图形的绘制,动画的绘制.而在图形的绘制中,简单的图形绘制则只需有基本的MATLAB指令就可完成,但是较为复杂的图形绘制则还需要有MATLAB变成加以辅助才可达到预期的目的.1.1 MATLAB的基本命令MATLAB的图形命令格式简单,可以使用不同的线形,色彩、数据点标记和标注等来修饰. MATLAB在二维和三维上的基本图形命令. (1)命令命令是MATLAB中最简单最常用的绘图命令,主要用来绘制二维曲线.命令格式为:表示要绘制的数据点的横坐标, 表示数据点的数值1. (2)设定坐标轴 用户若对坐标系统不满意,可利用axis命令对其重新设定.axis(xmin xmax ymin ymax) 设定最大和最小值.axis (auto) 将坐标系统返回到自动缺省状态.axis (square)将当前图形设置为方形.axis (equal) 两个坐标因子设成相等.axis (off) 关闭坐标系统. axis (on)显示坐标系统2. (3)加图例 给图形加图例命令为.该命令把图例放置在图形空白处,用户还可以通过鼠标移动图例,将其放到希望的位置2. 格式: ,是字符串,是位置,表取值对应的实际位置表1012341位置自动取最佳位置右上角(默认)左上角左下角右下角图右侧示例 在图形窗口添加文字注释x=0:.1:2*pi;plot(x,sin(x);hold onplot(x,cos(x),o);title(y1=sin(x),y2=cos(x);%添加标题xlabel(x)%添加坐标名legend(sin(x),cos(x),4)%在图的右下角添加注释text(pi,sin(pi),x=pi);%在pi,sin(pi)处添加文字注释运行该程序后,得到如下图1所示图1下面再说下三维上的有关绘图的基本命令 (4) 函数最基本的三维图形函数为,它是将二维函数的有关功能扩展到三维空间,用来绘制三维图形.函数格式:,其中表示三维坐标向量,表示线形或颜色.函数功能:以向量为坐标,绘制三维曲线1. 与之相关的还有函数、函数等机器派生函数.例1 三维网格图及阴影曲线、曲面的应用示例.利用、命令分别绘制函数的三维图,并在同一图形窗口显示.解 其实现的MATLAB程序代码如下:clear all;X,Y=meshgrid(-3:0.5:3);Z=2*X.2-3*Y.2;subplot(2,3,1);plot3(X,Y,Z);title(plot3);subplot(2,3,2);mesh(X,Y,Z);title(mesh);subplot(2,3,3);meshc(X,Y,Z);title(meshc);subplot(2,3,4);meshz(X,Y,Z);title(meshz);subplot(2,3,5);surf(X,Y,Z);title(surf);subplot(2,3,6);surfc(X,Y,Z);title(surfc);运行该程序后,得到如图2所示图2 (5)视点 视点位置可由方位角和仰角表示.方位角又称旋转角为视点位置在XY平面上的投影与X轴形成的角度,正值表示逆时针,负值表示顺时针.仰角又称视角为XY平面的上仰或下俯角,正值表示视点在XY平面上方,负值表示视点在XY平面下方.从不同视点绘制三维图形的函数为3. 中的为方位角,为仰角.通过系统提供的多峰函数的绘制例子,可进一步说明视点对图形的影响,以及函数的使用.不同视角图形; 系统提供的多峰函数主要代码如下:subplot(2,2,1);mesh(peaks,p);view(-37.5,30); 指定子图1的视点title(azimuth=-37.5,elevation=30)subplot(2,2,2);mesh(peaks,p);view(-17,60); 指定子图2的视点title(azimuth=-17,elevation=60) 1.2 MATLAB中的控制结构在MATLAB的编程过程中,程序的控制结构有3种:顺序结构、选择结构和循环结构,任何复杂的程序都可由这3种基本结构来组成.1.2.1 顺序结构顺序结构是指按照程序中的语句顺序依次执行,直到程序的最后一条语句,这是最简单的一种程序结构4.1.2.2 选择结构选择结构式根据给定的条件成立或不成立,分别执行不同的语句.MATLAB用于实现选择结构的语句有if语句、switch语句等4.() if语句在MATLAB中,if语句有3种格式()单分支if语句 语句格式为:if条件语句组end当条件成立时,则执行语句组,执行完毕之后继续执行if语句的后续语句;若条件不成立,则直接执行if语句的后继语句()双分支if语句语句格式:if条件语句1else语句2end当条件成立时,则执行语句组1,否则执行语句2,语句1或语句2执行后,在执行if语句的后继语句.()多分支if语句语句格式:if条件1语句1elseif条件2语句2elseif条件m语句melse 语句nend ()switch语句4switch语句称为选择语句,其关键字包括switch、case、otherwise、和end.它主要用于有选择的程序设计,实现程序的多分支选择,语句格式为:switch 选择表达式 case 情况表达式1语句1case 情况表达式2 语句2otherwise语句nend其工作流程是:计算机首先计算选择表达式的支,然后将该值分别与情况表达式的值进行比较;如果与其中之一相等,则执行该情况表达式后的语句组,执行完毕该语句组后就跳至end,接着执行end后续语句;如果与任何一个情况表达式的值都不等,则执行otherwise后的语句组n.1.2.3 循环语句循环语句是指按照给定的条件重复执行指定的语句,MATLAB提供了两种实现循环结构的语句:for语句和while语句5.() for语句for语句格式为:for 循环变量=表达式1:表达式2:表达式3 循环语句end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值.步长为1时,表达式2可以省略.for语句的执行过程:首先计算3个表达式的值,再将表达式1的值赋给循环变量,如果此时循环变量的值介于表达式1和表达式3值之间,则执行循环语句,否则结束循环的执行.执行完一次循环之后,循环变量自增一个表达式2的值,然后再判断循环变量是否介于表达式1和表达式3之间,如果是,仍然执行循环体,直至条件不满足.这时将结束for语句的执行,而继续执行for语句后面的语句. () while语句while语句的一般格式为:while 条件 循环体语句end 其执行过程:若条件成立,则执行循环体,执行后再判断条件是否成立,如果不成立,则跳出循环.1.3 相关动画方式的介绍MATLAB在几何图形设计中,必不可少的也有动画的设计,通过动画的设计,我们可以很形象的看出有关轨迹的形成过程,让我们可以生动地看出有关的轨迹.下面我就介绍几种常见的动画绘制方式.1.3.1 擦除方式动画设计这种方式是通过MATLAB句柄式图形搭配drawnow来实现的,原理是以对象的更新来产生新图,进而覆盖旧图,使图形对象不断发生变化,以实现动画效果,因此曲线、坐标轴等图形对象都可以借助XDATA、YDATA、ZDATA等属性的变化,搭配drawnow函数,来控制图形对象产生动画的效果使用这种方式产生动画必须先了解擦除模式的相关属性EraseMode属性主要是用以控制显示与擦除线条对象的技术,因此用户必须了解自己的动画适合哪一种擦除模式,使动画能够呈现最佳的显示方式而这种擦除模式是通过设置“EraseMode”属性来完成的,一共有三种擦除模式:none :重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程,如曲线和旋转曲面的生成过程background :在重新绘制图形对象之前,用背景色重绘对象来达到擦除原来图形对象的目的该模式会擦除任何对象和它下面的任何图形:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形这种模式能产生图形对象移动的效果3以下为建立一个随时间增加的三角函数曲线动画范例,这个范例主要是使用set函数来改变曲线的Y坐标,并以的方式抹去旧曲线以擦除方式呈现动画的步骤如下(1) 产生一个图形对象,如曲线(2) 设置该对象的属性EraseMode来决定对象的更新的方式,一般设置为XOR(3) 建立循环并借助对象的xdata或ydata或二者的搭配drawnow来产生动画例2 建立一个随时间增加的三角函数曲线动画,主要使用set函数来改变曲线Y坐标,并以xor的方式抹去旧曲线.解 在M文件编辑器中输入以下程序代码:t=0:0.05:10*pi;h=plot(t,tan(2*t).*cos(3*t)*exp(t.2/5),erasemode,xor);set(gcf,position,450,350,350,250)for i=1:200 y=sin(2*t+i/10).*exp(t/5); set(h,ydata,y); drawnowend执行程序后,显示结果如图3图31.3.2 质点运动轨迹方式动画设计质点运动轨迹动画方式是最简单的动画产生方式,顾名思义,就是产生一个顺着曲线轨迹运动的质点来操作在MATLAB中具体的命令为、,其中用于二维平面,用于三维平面3的常用调用格式如下:1) 显示质点绕着向量的动画轨迹(二维)2) 显示质点绕着与的动画轨迹(二维)3) 同上面的效果,但额外地定义轨迹尾巴线的长,其中是介于0和1之间的数,默认为0.1例3 使用函数建立一个质点绕着圆轨迹运动的动画解 在命令窗口输入以下程序代码:t=linspace(0,2*pi,1000);x=cos(t);y=sin(t);plot(x,y),axis square,hold on;comet(x,y,0.03)执行以上程序后,显示结果如下图4所示.与的做法类似,但是用于三维的质点运动轨迹,因此必须加上Z轴的资料例4 使用函数建立一个质点绕着圆柱螺旋线轨迹运动的动画解 在命令窗口输入以下程序代码:t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);comet3(sin(t),cos(t),t,0.5)执行以上程序后,显示结果如下图5所示 图4 图51.3.3 电影方式动画设计这也就是说,要想实现该效果,则先保存多幅不同的图片,再像放电影一样把它们按次序播放出来而要想达到这种目的,我们人需要些捕捉和播放动画的工具,MATLAB中的函数、和可提供了这些工具3.l 可以产生一个帧矩阵来存放动画的帧.l 对当前的图形进行快照l 按顺序回放格帧电影方式的结构如下所示%记录电影for j=1:n %旋转并记录每一个画面 plot_command %以绘图函数来产生动画 M(j)=getframe;%抓取画面值endmovie(M) %播放动画2 几何图形的方程在平面上或空间取定了坐标系后,平面上或空间的点就与有序数组或建立了一一对应的关系.在此基础上,我们则可以进一步建立作为点的轨迹曲线、曲面与方程之间的联系,把研究曲线与曲面的几何问题,归结为与研究其方程的代数问题,从而利用代数知识加以解决.2.1 平面曲线的方程在这里,平面上的曲线(包括直线),都是看成具有某种特征性质的点的集合.也就是说,曲线上的点都具有这些性质.相反,具有这些性质的点也都在曲线上.那么这种性质反映在建有坐标系的平面上,则可以表示为曲线上点的两个坐标x和y应满足相互制约的条件,一般用方程或来表达.当平面上取定了坐标系之后,如果一个方程与一条曲线有着关系:满足方程必是曲线上某一点的坐标;曲线上任一点的坐标满足这个方程,那么这个方程就叫做这条曲面的方程,而这条曲线叫做这个方程的图形6.例5 已知两点和,求满足的动点的轨迹方程.解 动点在轨迹上的充要条件是,用点的坐标来表示就是 (2.1-1)移项得,两边平方整理得 (2.1-2)两边平方整理得 (2.1-3) 因为(2.1-1)(2.1-2)同解,而(2.1-2)(2.1-3)不同解,但当方程(2.1-3)附加了条件后,方程(2.1-2)(2.1-3)同解,从而,(2.1-1)(2.1-3)同解,所以方程为所求动点的轨迹方程 因为这次有已知方程,可我们可以通过该方程运用MATLAB来运行得到其轨迹,以达到视觉上的形象具体.在MATLAB命令窗口输入以下代码:x=0.1:0.1:5;y=2./x;plot(x,y)运行该程序后,得到如图6所示图62.2 空间曲线的方程空间曲线的方程可以看成两个曲面的交线.设 (2.2-1)是这样的两个曲面的方程.他们相交于曲线L.这样,曲线L上的任意一点,同时在这两个曲面上,它的坐标就满足方程组(2.2-1);反过来,满足方程组(2.2-1)的任意一组解所决定的点同时在这两曲面上,即在这两曲面的交线上,因此方程(2.2-1)表示一条空间曲线L的方程,我们把它称为空间曲线的一般方程.但是空间曲线也像平面曲线那样,可用它的参数方程来表达.也就是,把空间曲线看作是质点的运动轨迹,则在空间建立坐标系后,设向量函数 (2.2-2)或 (2.2-3)当在区间内变动时,的终点,全部都在空间曲线L上;反过来,空间曲线L上的任意点的向径都可由的某个值通过(2.2-2)或(2.2-3)来表示,那么(2.2-2)或(2.2-3)就叫做空间曲线L的向量式参数方程,其中为参数6.因为空间曲线上点的向径的坐标为,所以空间曲线的参数方程常写成 (2.2-4)表达式(2.2-4)叫做空间曲线的坐标是参数方程,其中为参数.例6 用MATLAB绘制空间曲线:; 的交线解 通过解方程我们可以得到:曲线的轨迹是一个椭圆,它的方程是在MATLAB命令窗口输入以下代码:X,Y,Z=sphere(50);mesh(8*X,8*Y,8*Z)%画球面hold on;ezmesh(0-y,-8 8)%画平面x,y,z=meshgrid(linspace(-8,8);contourslice(x,y,z,y+z,8*X,8*Y,8*Z,0 0)%画交线axis equalview(135,20)%只显示出这条椭圆曲线figurecontourslice(x,y,z,y+z,8*X,8*Y,8*Z,0 0)%画交线axis equalview(135,20)运行程序后,得到如图7、图8所示 图7 图8例7 试绘制空间曲线解 在MATLAB命令窗口输入以下代码: t=0:pi/30:6*pi;x=cos(t);y=sin(t).*cos(t);z=t;plot3(x,y,z)运行得到如图9所示图92.3 空间曲面的方程空间曲面方程的意义和平面曲线的方程式一样的,那就是在空间坐标系之后,把曲面(作为点的轨迹)上的点的特征性质,用点的坐标与之间的关系式来表示,一般是用方程 (2.3-1)或 (2.3-2)来表示,每一个形如(2.3-1)或(2.3-2)的方程通常表示空间的一个曲面也就是说,如果一个方程(2.3-1)或(2.3-2)一个曲面Z有这关系:满足方程(2.3-1)或(2.3-2)的是曲面Z上的点的坐标;曲面Z上的任何一点的坐标满足方程(2.3-1)或(2.3-2),那么方程(2.3-1)或(2.3-2)就叫做曲面Z的方程,而曲面Z叫做方程(2.3-1)或(2.3-2)的图形通过平面曲线的参数方程我们可以知道,它是以单参数点的向量函数或定义的,那么空间曲面的参数方程也可根据平面曲线的参数方程来进行相似的定义.设在两个变量的变动区域内定义了双参数向量函数 (2.3-3)或 (2.3-4)这里的是变向量的坐标.它们都是变量的函数也就是说,如果取的一切可能取得值,由(2.3-4)表示的向径的终点总在一个曲面上;反过来,在这个曲面上的任意点总对应着以它为终点的向径,而这向径可由的值通过(2.3-4)完全决定,那么我们就把表达式(2.3-4)叫做曲面的向量式参数方程,其中为参数因为向径的坐标为,所以曲面的参数方程也常写为 (2.3-5)表达式(2.3-5)叫做曲面的坐标式参数方程6.例8 做出马鞍面的图形,并画出马鞍面与平面的截图解 通过有关知识,我们可以写出一下程序:clcx=-4:0.2: 4; y=-3:0.2:3;xx,yy=meshgrid(x,y);zz=xx.2/4-yy.2/9;zz2=2*ones(size(zz);mesh(xx,yy,zz)hold onsurf(xx,yy,zz2)运行该程序后,得到的如下图10、图11所示. 图10 图113 二次曲面的截痕演示图所谓的二次曲面的截痕演示图,也就是说利用MATLAB将平面与截线用不同的颜色绘出,当平面顺着坐标轴方向平行移动时,将其对应的截线保留下来,最后的截线在MATLAB绘图框中构成对应的二次曲面7.3.1 椭球面的截痕法的实现椭球面的标准方程5 (3.1-1)用平面的平行面与标准方程相截得截线方程式: (3.1-2)由(3.1-2)式知截线是一个椭圆,当值在范围内变动时,所有对应的截线就构成椭球面,将截线中的和变量用极坐标表示,MATLAB程序如下:clcclear allhold onaxis(-8 8 -8 8 -8 8)axis ongrid onview(0.4178 0.2247 0.8803)a=3;b=4;c=5;x=-a-5:a+5;y=-b-5:b+5;X,Y=meshgrid(x,y);Z=zeros(size(X)+c;for i=1:100 if abs(Z(1)=c h=mesh(X,Y,Z); k=sqrt(1-(Z(1).2/c.2); Theta1=linspace(0,2*pi,50); X1=a*k.*cos(Theta1); Y1=b*k.*sin(Theta1); Z1=zeros(length(X1)+Z(1); g=plot3(X1,Y1,Z1,b); else break; end Z=Z-1/4; F(i)=getframe; delete(h);endmovie(F,2,30)hold on运行程序后,得到的是一动画效果,本次只是截取了部分画面,如下面图12、图13、图14、图15所示 图12 图13 图14 图153.2 马鞍面与平面的相截的交线的演示图通过马鞍面方程与平面的方程相交,我们进行解析得出他们的交线方程,我们可以知道这是一个双曲线,而又通过平面的不同,我们也可以看出交线的形状也不同,即双曲线的形状也在发生这改变7.根据我们所学的知识,运用MATLAB我们可以进行以下编程.其代码如下:clf, a=-20;eps0=1;x,y=meshgrid(-10:0.2:10); %生成平面网格v=-10 10 -10 10 -100 100; %设定空间坐标系的范围colormap(gray) %将当前的颜色设置为灰色z1=(x.2-2*y.2)+eps; %计算马鞍面函数z1=z1(x,y)z2=a*ones(size(x); %计算平面 z2=z2(x,y)r0=abs(z1-z2)=eps0; zz=r0.*z2;xx=r0.*x;yy=r0.*y; %计算截割的双曲线及其对应的坐标subplot(2,2,2), %在第2图形窗口绘制双曲线 h1=plot3(xx(r0=0),yy(r0=0),zz(r0=0),+); set(h1,markersize,2),hold on,axis(v),grid onsubplot(2,2,1), %在第一图形窗口绘制马鞍面和平面 mesh(x,y,z1);grid,hold on;mesh(x,y,z2); h2=plot3(xx(r0=0),yy(r0=0),zz(r0=0),.); %画出二者的交线 set(h2,markersize,6),hold on,axis(v),for i=1:5a=70-i*30; %在这里改变截割平面 z2=a*ones(size(x); r0=abs(z1-z2)=1; zz=r0.*z2;yy=r0.*y;xx=r0.*x; subplot(2,2,3), mesh(x,y,z1);grid,hold on;mesh(x,y,z2);hidden off h2=plot3(xx(r0=0),yy(r0=0),zz(r0=0),.); axis(v),grid subplot(2,2,4), h4=plot3(xx(r0=0),yy(r0=0),zz(r0=0),o); set(h4,markersize,2),hold on,axis(v),grid onend运行程序后,我们可以得到如图16所示图16为了更清楚地看到马鞍面与各个平面相截,所得到的截线图形,请参照下面主要程序:%平面截双曲抛物面(马鞍面)clearclcmov=avifile(平面截双曲抛物面(马鞍面).avi,fps,3);a=4;b=4;X=linspace(-12,12,30);Y=linspace(-12,12,30);X,Y=meshgrid(X,Y);Z=X.2/a2-Y.2/b2;figure(1)surf(X,Y,Z)T= 1.1832 -0.8084 0 -0.1874 0.1903 0.4799 0.9511 -0.8106 0.5858 1.4770 -0.3090 11.2109 0 0 0 1.0000;view(T)hold onquiver3(0,0,0,-1,0,0,20,k,filled,LineWidth,2);quiver3(0,0,0,0,-1,0,30,k,filled,LineWidth,2);quiver3(0,0,0,0,0,1,15,k,filled,LineWidth,2);text(0,-2,15,Z)text(0,-30,1,Y)text(-20,0,1.5,X)axis equalaxis off%colormap grayX,Y=meshgrid(-13:0.5:13,-13:0.5:13);Z=-9*ones(size(X);h=surf(X,Y,Z);shading interpalpha(0.6);%axis(-17,17,-17,17,-10,10)title(平面截双曲抛物面(马鞍面)的演示动画)h1=plot3(0,-12,-9,-k);h2=plot3(0,12,-9,-k);x=-12:0.5:12;for z=-9:0.1:0 set(h, xdata ,X, ydata ,Y, zdata ,z*ones(size(X); xx=x; zz=z*ones(size(xx); yy1=-b*sqrt(xx.2/a2-zz); yy2=b*sqrt(xx.2/a2-zz); set(h1, xdata ,xx, ydata ,yy1, zdata ,zz); set(h2, xdata ,xx, ydata ,yy2, zdata ,zz); drawnow; % 刷新屏幕 pause(0.05) f=getframe(gcf); mov=addframe(mov,f);endfor z=0:0.1:9 set(h, xdata ,X, ydata ,Y, zdata ,z*ones(size(X); yy=x; zz=z*ones(size(yy); xx1=-a*sqrt(yy.2/b2+zz); xx2=a*sqrt(yy.2/b2+zz); set(h1, xdata ,xx1, ydata ,yy, zdata ,zz); set(h2, xdata ,xx2, ydata ,yy, zdata ,zz); drawnow; % 刷新屏幕 pause(0.05) f=getframe(gcf); mov=addframe(mov,f);enddelete(h2);delete(h); pause(0.05) f=getframe(gcf); mov=addframe(mov,f);enddelete(h1);delete(h);hold offmov=close(mov); 运行程序后得到的是动画形式,再次截取其中几个具有代表性的画面,如图17、图18、图19、图20.图17 图18图19 图204 二维图形的具体应用二维图形不仅仅在几何学中应用广泛,更在其他方面做着巨大的贡献,如,小到生活中的日常用品,例如,钟表,就相当于点绕一点做半径为的圆周运动; 图形的设计上,我们也可以发现二维图形的美妙;在积分方面,我们可以通过二维图形的动画渐进过程来更清晰地了解这个无限趋近的具体含义.4.1 日常钟表的模拟我们家常用的钟表,即一个大圆表,有秒针、分针、时针,通过这三个指针运动轨迹我们不难发现,运用到的数学原理也就是,它们都是以转轴为圆心,以它们的指针长为半径做圆周运动,这就是我们常见的圆的轨迹,其方程我们也可以模拟出来,再者就是,三者的转速问题,以秒针最快,时针最慢,它们之间的转速,我们可以通过坐标式参数方程来解决这三者的关系.根据所学知识,我们可以写出以下编程,主要代码如下:close allhfig=figure(NumberTitle,off,name,none);theta=linspace(0,6.3,1000);x1=8*cos(theta);y1=8*sin(theta);plot(x1,y1,m,linewidth,1.4)%绘制外表盘hold onaxis equalx2=7*cos(theta);y2=7*sin(theta);plot(x2,y2,b,linewidth,3.5)%绘制内表盘fill(0.4*cos(theta),0.4*sin(theta),y);%绘制指针转轴axis off axis(-10 10 -10 10)set(gca,position,0.13 0.05 0.775 0.815)title(date,fontsize,18)for k=1:12;xk=9*cos(-2*pi/12*k+pi/2);yk=9*sin(-2*pi/12*k+pi/2);plot(xk/9*8 xk/9*7,yk/9*8 yk/9*7,color,0.3 0.8 0.9);text(xk,yk,num2str(k),fontsize,16,color,.0.9 0.3 0.8,HorizontalAlignment,center);%表盘时刻标度end% 计算时针位置ti=clock;th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;xh3=4.0*cos(th);yh3=4.0*sin(th);xh2=xh3/2+0.5*cos(th-pi/2);yh2=yh3/2+0.5*sin(th-pi/2);xh4=xh3/2-0.5*cos(th-pi/2);yh4=yh3/2-0.5*sin(th-pi/2);hh=fill(0 xh2 xh3 xh4 0,0 yh2 yh3 yh4 0,0.6 0.5 0.3);while 1;ti=clock;%每次读取系统时间,并进行运算% 计算分针位置tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;xm3=6.0*cos(tm);ym3=6.0*sin(tm);xm2=xm3/2+0.5*cos(tm-pi/2);ym2=ym3/2+0.5*sin(tm-pi/2);xm4=xm3/2-0.5*cos(tm-pi/2);ym4=ym3/2-0.5*sin(tm-pi/2);set(hm,XData,0 xm2 xm3 xm4 0,YData,0 ym2 ym3 ym4 0)% 计算秒针位置ts=-(ti(6)/60*2*pi+pi/2;set(hs,XData,0 7*cos(ts),YData,0 7*sin(ts)set(gcf, color, green);drawnow;pause(0.09)endend运行得到图21 、图22所示 图21 图224.2 “热爱祖国”的绘制这个实验一个基本点就是心形线的绘制,原理就是一个质点其轨迹就是按照心形线来运动8,这个主要是应用了通过绘制心形线来辅助绘制该质点的运动轨迹,要点就是半径的变化,只要找到了半径的变化规律,就可以通过MATLAB的相关知识进行编程,再在图形上面加以文字的注释,已达到预期的效果.具体过程参考以下程序:clch=figure(name,爱的表达);axis(-1.5 1.5 -2 0.5);axis off;set(gcf,color,black);n=4;a=320;m=10(-a);h11=line(NaN,NaN,marker,.,linesty,-,erasemode,none,color,r);x1=;y1=;for theta=pi/2:-2*pi/999:-3*pi/2; r1=1+cos(theta+pi/2); x1=x1;r1*cos(theta); y1=y1;r1*sin(theta); set(h11,xdata,x1,ydata,y1); pause(m);endpause(1);fill(x1,y1,r);axis off;set(gcf,color,black);text(-0.16*n,-0.85,热爱祖国,fontsize,n*10,color,b);title(心形线,fontsize,18,color,m);disp(love you);pause(1);x2=;y2=;h22=line(NaN,NaN,marker,.,linesty,-,erasemode,none,color,b);for theta=pi/2:-2*pi/999:-3*pi/2; r2=1+cos(theta+pi/2); x2=x2;r1*cos(theta); y2=y2;r1*sin(theta); set(h22,xdata,x2,ydata,y2); pause(m19);end运行该程序后,得到如图23、图24所示 图23 图244.3 阶梯形逼近曲边梯形该实验主要是为了说明平面几何知识在积分方面得到的可视化的效果,从而为人们更好地学习积分知识另辟一条道路.这个实验用到的相关几何知识也就是首先要画出曲边梯形,这个在二维绘图中还算比较简单就不多做介绍,其次就是,如何要达到渐进的效果,这个需要一个数值上的精确度,数值选择过小或者过少曲边梯形微分程度较小,难以看到积分后的效果,所以,需要通过多次实验,以求达到最佳效果.通过我多次的实验,在我的多次积累中,找到相对的最佳效果图,具体的程序代码及程序运行所得到的图形,参见下文:在MATLAB命令窗口中,输入以下程序:syms x;y=exp(x);a=input(请输入积分区间左端点 a=);b=input(请输入积分区间右端点 b=);n=input(请输入对积分区间等比的正整数数组n=n1,n2,.(各分量是单增的)n=);m=length(n);x=a:0.0005:b;y=exp(x);for i=1:m plot(x,y,b) hold on s(i)=0; h=(b-a)/n(i); for j=1:n(i) u(j)=a+(j-1)*h; v(j)=exp(u(j); u(j+1)=a+j*h; s(i)=s(i)+v(j)*h; fill(u(j),u(j),u(j+1),u(j+1),0,v(j),v(j),0,y) end pause(2) hold offendtitle(阶梯形逼近曲边梯形)table=n,s;disp( 等分数 阶梯形面积)disp(table)运行该程序后,得到如图25、图26所示输入a=10b=16n=1,2,4,8,16,32,64 图25 图265 三维立体的应用在三维空间里,一些三维立体图可以看成由某些质点在空间中按一定的轨迹运动而形成,即空间立体可以看做是由各种曲线组成,而曲线则是由质点运动而形成,那么三维立体的模型可由点集成线8,再由线集成面,那么,质点一定的运动轨迹可以在一定程度上看成是三维立体的模型.同时,我们有了所需的面或者立体时,我们就可以通过点的拼凑来实现我们要达到的目的.例9 一小球沿半径为1的圆柱内壁滚动,小球初速度方向为水平方向,竖直方向做速度为的匀速运动模拟小球的运动曲线解 经分析之,小球在水平方向上是做半径为1的圆周运动,在竖直方向上是做匀速运动,那么,小球的轨迹我们不难看出,是一个螺旋线形状,而此螺旋线又可是圆柱体的模拟图形,根据有关的圆柱体的知识以及小球运动的物理知识,我们可以很简单地求出小球的运动轨迹.建立空间直角坐标系,取平行于圆柱内壁的方向为轴方向,平面经过小球,原点为平面所截圆的圆心小球运行时间,有则有根据这一方程可以编写程序具体如下:t=0:0.001:5;v0=4;r=1;theta=v0*t/r;x=-cos(theta);y=-sin(theta);z=-4*v0*t;t1,t2=meshgrid(0:0.1:2*pi,-125:0.1:0);x1=cos(t1);y1=sin(t1);z1=t2;surf(x1,y1,z1)shading interpcolormap(0 1 1);alpha(0.1)axis(-2 2 -2 2 -80 0)hold oncomet3(x,y,z)hold off运行该程序后,得到如图27所示图27例10 有两个圆柱体,其方程分别为,运用MATLAB来画出两圆柱体组合形成的立体图形,这实际上相当于一个足等半径的四通管的模拟.解 建立空间直角坐标系,则有方程可知,是以Z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论