用Matlab动画演示几何图形的几种方法

合集下载

Matlab用于动画制作旋转曲面设计

Matlab用于动画制作旋转曲面设计

Matlab用于动画制作旋转曲面设计童德茂;张华【摘要】Many product shapes can be generated by the rotating surface in modem industry.It is very necessary to choose a project way to surface of revolution workpiece modelling dynamic visual presentation .Matlab has an open extensible environment and strong drawing-graphics function and flexible program design bining with the characteristics of the matrix of dealing with the problem in matlab and using the matrix as the basic unit of data operation , we explore the rotation surface integrity of the animation process.%旋转曲面可以构造成现代工业中诸多产品形状,选择一种工程语言将旋转曲面工件造型动态直观演示出来是非常必要的。

Matlab以矩阵作为数据操作的基本单位,拥有开放式可扩充环境、强大的绘图功能和灵活的程序设计技巧,融合Matlab矩阵处理问题特点,列举动画制作旋转曲面程序,以探究Matlab实现旋转曲面动画制作的完整过程。

【期刊名称】《安庆师范学院学报(自然科学版)》【年(卷),期】2015(000)002【总页数】5页(P125-129)【关键词】Matlab;旋转曲面;动画程序;几何变换【作者】童德茂;张华【作者单位】阜阳职业技术学院工程科技学院,安徽阜阳 236031;阜阳职业技术学院工程科技学院,安徽阜阳 236031【正文语种】中文【中图分类】TP312Matlab以矩阵作为数据操作的基本单位,集成了图形图像处理、数值分析、矩阵运算、可视化和仿真等诸多强大功能的交互式计算机环境工程语言[1-2]。

(整理)matlab实例教程-比较实用.

(整理)matlab实例教程-比较实用.

实验一特殊函数与图形一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景与实验目的著名的Riemann函数大家都很熟悉了,但是关于它的图像你是否清楚呢除了最上面那几点,其他都很难画吧你想不想看看下面那些“挤在一起”的点是怎样分布的呢还有几何中的马鞍面、单叶双曲面等是怎样由直线生成的,是不是也想目睹一下呢这些,都离不开绘图.实际上绘图一直是数学中的一种重要手段,借助图形,往往可以化繁为简,使抽象的对象得到明白直观的体现.比如函数的基本性质,一个图形常可以使之一目了然,非常有效.它虽不能代替严格的分析与证明,但在问题的研究过程中,可以帮助研究人员节约相当一部分精力.此外,它还可以使计算、证明、建模等的结果得到更明白易懂的表现,有时,这比科学论证更有说服力.同时,数学的教学与学习过程也离不开绘图.借助直观的图形,常可以使初学者更容易接受新知识.如数学分析中有不少函数,其解析式着实让人望而生畏,即使对其性质作了详尽的分析,还是感到难明就里;但如果能看到它的图形,再配合理论分析,则问题可以迎刃而解.又如在几何的学习中,会遇到大量的曲线与曲面,也离不开图形的配合.传统的手工作图,往往费力耗时,效果也不尽理想.计算机恰恰弥补了这个不足,使你可以方便地指定各种视角、比例、明暗,从各个角度进行观察.本实验通过对函数的图形表示和几个曲面(线)图形的介绍,一方面展示它们的特点,另一方面,也将就Matlab软件的作图功能作一个简单介绍.大家将会看到,Matlab 的作图功能非常强大.二、相关函数(命令)及简介1.平面作图函数:plot,其基本调用形式:plot(x,y,s)以x作为横坐标,y作为纵坐标.s是图形显示属性的设置选项.例如:x=-pi:pi/10:pi;y=sin(x);plot(x,y,'--rh','linewidth',2,'markeredgecolor','b','markerfacecolor','g')图1在使用函数plot时,应当注意到当两个输入量同为向量时,向量x与y必须维数相同,而且必须同是行向量或者同是列向量.绘图时,可以制定标记的颜色和大小,也可以用图形属性制定其他线条特征,这些属性包括:linewidth 指定线条的粗细.markeredgecolor 指定标记的边缘色markerfacecolor 指定标记表面的颜色.markersize 指定标记的大小.若在一个坐标系中画几个函数,则plot的调用格式如下:plot(x1,y1,s1,x2,y2,s2,……)2.空间曲线作图函数:plot3,它与plot相比,只是多了一个维数而已.其调用格式如下:plot3(x,y,z,s).例如:x=0:pi/30:20*pi;y=sin(x);z=cos(x);plot3(x,y,z)得到三维螺旋线:图23.空间曲面作图函数:(1)mesh函数.绘制彩色网格面图形.调用格式:mesh(z),mesh(x,y,z)和mesh(x,y,z,c).其中,mesh(x,y,z,c)画出颜色由c指定的三维网格图.若x、y均为向量,则length(x)=n,length(y)=m,[m,n]=size(z).(2)surf在矩形区域内显示三维带阴影曲面图.调用格式与mesh类似.(3)ezmesh用符号函数作三维曲面网格图.调用格式:ezmesh(x,y,z)其中x = x(s,t), y = y(s,t),z = z(s,t).画图区域默认为: -2*pi < s < 2*pi 且-2*pi < t < 2*pi.或者用格式:ezmesh(x,y,z,[smin,smax,tmin,tmax])(4)ezsurf用符号函数作三维曲面图.调用格式与ezmesh类似.(5)sphere画球体命令.4.meshgrid,调用格式:[x,y]=meshgrid(m,n),这里的m,n为给定的向量,可以定义网格划分区域和划分方法.矩阵x和矩阵y是网格划分后的数据矩阵.5.图像的修饰与其他函数:(1)axis equal 控制各个坐标轴的分度,使其相等;(2)colormap设置绘图颜色.调用格式:colormap([r g b])其中r,g,b都是0-1之间的数.或者用格式:colormap(s)s颜色映像相应的颜色系颜色映像相应的颜色系autumn红黄色系hsv色调饱和色系gray线性灰色系hot黑红黄白色系cool青和洋红色系pink柔和色系(3(4)find找出符合条件的元素在数组中的位置.调用格式:y=find(条件)例如:输入:a=[4 5 78 121 4 665 225 4 1];b=find(a>7)输出: b =3 4 6 7三、实验内容数学分析中,特别是积分部分,我们接触了不少有趣的函数,由于其中有的不是一一对应的,用上面的方法无法画出它们的图像,这时就只能用参数了.此外还有些图形只能用参数来画,比如空间曲线,在计算机上不接受“两个曲面的交线”这种表示,所以也只能用参数来实现.用参数方式作图的关键在于找出合适的参数表示,尤其是不能有奇点,最好也不要用到开方.所以要找的参数最好是有几何意义的.当然这也不可一概而论,需要多积累经验.1.利用函数plot在一个坐标系中画以下几个函数图像,要求采用不同颜色、不同线形、不同的符号标记.函数为:.程序如下:t=0:pi/20:2*pi;x=sin(t);y=cos(t);z=sin(2*t);plot(t, x, '--k*', t, y, '-rs', t, z, ':bo')图像如下:图32.绘制类似田螺线的一条三维螺线(方程自己设计).程序如下:t=0:.1:30;x=2*(cos(t)+t.*sin(t));y=2*(sin(t)-t.*cos(t));z=*t;plot3(x,y,-z) %取–z 主要是为了画图看起来更清楚axis equal图像如下:图43.利用函数,绘制一个墨西哥帽子的图形.程序如下:[a,b]=meshgrid(-8:.5:8); %先生成一个网格c=sqrt(a.^2+b.^2)+eps;z=sin(c)./c;mesh(a,b,z)axis square图像如下:图5思考:这里的 eps 是什么其作用是什么4.利用surf绘制马鞍面图形(函数为:).程序如下:[x,y]=meshgrid(-25:1:25,-25:1:25);z=x.^2/9-y.^2/4;surf(x,y,z)title('马鞍面')grid off图像如下:图65.分别用ezmesh和ezsurf各绘制一个圆环面,尝试将两个圆环面放在一个图形界面内,观察它们有什么不同之处.提示:圆环面的方程为:,而圆环面的参数方程为:程序参见附录1.图像如下:图76.绘制黎曼函数图形,加深对黎曼函数的理解.说明:黎曼函数的定义为程序参见附录2.图像如下:图8四、自己动手1.作出下图所示的三维图形:图9提示:图形为圆环面和球面的组合.2.作出下图所示的墨西哥帽子及其剪裁图形:图103.画出球面、椭球面、双叶双曲面、单叶双曲面.4.若要求田螺线的一条轴截面的曲边是一条抛物线:时.试重新设计田螺线的参数方程,并画出该田螺线.5.作出下图所示的马鞍面(颜色为灰色,并有一个标题:“马鞍面”):图116.绘制图8所示的黎曼函数图形,要求分母的最大值的数值由键盘输入(提示:使用input语句).回目录下一页实验二定积分的近似计算一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容1.矩形法2.梯形法3.抛物线法4. 直接应用Matlab命令计算结果四、自己动手一、问题背景与实验目的利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用.二、相关函数(命令)及简介1.sum(a):求数组a的和.2.format long:长格式,即屏幕显示15位有效数字.(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.4.quad():抛物线法求数值积分.格式: quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即 .*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2);5.trapz():梯形法求数值积分.格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算x=0:pi/100:pi;y=sin(x);trapz(x,y)6.dblquad():抛物线法求二重数值积分.格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递.例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法.Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件:function z = integrnd(x, y)z = y*sin(x);7.fprintf(文件地址,格式,写入的变量):把数据写入指定文件.例:x = 0:.1:1;y = [x; exp(x)];fid = fopen('','w'); %打开文件fprintf(fid,'% %\n',y); %写入fclose(fid) %关闭文件8.syms 变量1 变量2 …:定义变量为符号.9.sym('表达式'):将表达式定义为符号.解释:Matlab中的符号运算事实上是借用了Maple的软件包,所以当在Matlab中要对符号进行运算时,必须先把要用到的变量定义为符号.10.int(f,v,a,b):求f关于v积分,积分区间由a到b.11.subs(f,'x',a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.若简单地使用subs(f),则将f的所有符号变量用可能的数值代入,并计算出值.三、实验内容1.矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同的取法,计算结果会有不同,我们以为例(取),(1)左点法:对等分区间,在区间上取左端点,即取,,理论值,此时计算的相对误差(2)右点法:同(1)中划分区间,在区间上取右端点,即取,,理论值,此时计算的相对误差(3)中点法:同(1)中划分区间,在区间上取中点,即取,,理论值,此时计算的相对误差如果在分割的每个小区间上采用一次或二次多项式来近似代替被积函数,那么可以期望得到比矩形法效果好得多的近似计算公式.下面介绍的梯形法和抛物线法就是这一指导思想的产物.2.梯形法等分区间,相应函数值为().曲线上相应的点为()将曲线的每一段弧用过点,的弦(线性函数)来代替,这使得每个上的曲边梯形成为真正的梯形,其面积为,.于是各个小梯形面积之和就是曲边梯形面积的近似值,,即,称此式为梯形公式.仍用的近似计算为例,取,,理论值,此时计算的相对误差很显然,这个误差要比简单的矩形左点法和右点法的计算误差小得多.3.抛物线法由梯形法求近似值,当为凹曲线时,它就偏小;当为凸曲线时,它就偏大.若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法.将积分区间作等分,分点依次为,,对应函数值为(),曲线上相应点为().现把区间上的曲线段用通过三点,,的抛物线来近似代替,然后求函数从到的定积分:由于,代入上式整理后得同样也有……将这个积分相加即得原来所要计算的定积分的近似值:,即这就是抛物线法公式,也称为辛卜生(Simpson)公式.仍用的近似计算为例,取,=,理论值,此时计算的相对误差4. 直接应用Matlab命令计算结果(1)数值计算方法1:int('1/(1+x^2)','x',0,1) (符号求积分)方法2:quad('1./(1+x.^2)',0,1) (抛物线法求数值积分)方法3:x=0::1;y=1./(1+x.^2);trapz(x,y) (梯形法求数值积分)(2)数值计算方法1:int(int('x+y^2','y',-1,1),'x',0,2) (符号求积分)方法2:dblquad(inline('x+y^2'),0,2,-1,1) (抛物线法二重数值积分)四、自己动手1.实现实验内容中的例子,即分别采用矩形法、梯形法、抛物线法计算,取,并比较三种方法的精确程度.2.分别用梯形法与抛物线法,计算,取.并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异.3.试计算定积分.(注意:可以运用trapz()、quad()或附录程序求解吗为什么)4.将的近似计算结果与Matlab中各命令的计算结果相比较,试猜测Matlab中的数值积分命令最可能采用了哪一种近似计算方法并找出其他例子支持你的观点.5.通过整个实验内容及练习,你能否作出一些理论上的小结,即针对什么类型的函数(具有某种单调特性或凹凸特性),用某种近似计算方法所得结果更接近于实际值6.学习的程序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环.上一页回目录下一页实验三求代数方程的近似根(解)一、问题背景和实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景和实验目的求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当是一次多项式时,称为线性方程,否则称之为非线性方程.当是非线性方程时,由于的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间,或给出某根的近似值.在实际问题抽象出的数学模型中,可以根据物理背景确定;也可根据的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况.通过本实验希望你能:1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程;2. 求代数方程(组)的解.二、相关函数(命令)及简介1.abs( ):求绝对值函数.2.diff(f):对独立变量求微分,f 为符号表达式.diff(f, 'a'):对变量a求微分,f 为符号表达式.diff(f, 'a', n):对变量 a 求 n 次微分,f 为符号表达式.例如:syms x tdiff(sin(x^2)*t^6, 't', 6)ans=720*sin(x^2)3.roots([c(1), c(2), …, c(n+1)]):求解多项式的所有根.例如:求解:.p = [1 -6 -72 -27];r = roots(p)r =4.solve('表达式'):求表达式的解.solve('2*sin(x)=1')ans =1/6*pi5.linsolve(A, b):求线性方程组 A*x=b 的解.例如:A= [9 0; -1 8]; b=[1; 2];linsolve(A, b)ans=[ 1/9][19/72]6.fzero(fun, x0):在x0附近求fun 的解.其中fun为一个定义的函数,用“@函数名”方式进行调用.例如:fzero(@sin, 3)ans=7.subs(f, 'x ', a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.例如:subs('x^2 ', 'x ', 2)ans = 4三、实验内容首先,我们介绍几种与求根有关的方法:1.对分法对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.设在上连续,,即,或,.则根据连续函数的介值定理,在内至少存在一点,使.下面的方法可以求出该根:(1)令,计算;(2)若,则是的根,停止计算,输出结果.若,则令,,若,则令,;.……,有、以及相应的.(3) 若 (为预先给定的精度要求),退出计算,输出结果;反之,返回(1),重复(1),(2),(3).以上方法可得到每次缩小一半的区间序列,在中含有方程的根.当区间长很小时,取其中点为根的近似值,显然有以上公式可用于估计对分次数.分析以上过程不难知道,对分法的收敛速度与公比为的等比级数相同.由于,可知大约对分10次,近似根的精度可提高三位小数.对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值.2. 迭代法1)迭代法的基本思想:由方程构造一个等价方程从某个近似根出发,令,可得序列,这种方法称为迭代法.若收敛,即,只要连续,有即可知,的极限是的根,也就是的根.当然,若发散,迭代法就失败.以下给出迭代过程收敛的一些判别方法:定义:如果根的某个邻域中,使对任意的,迭代过程,收敛,则称迭代过程在附近局部收敛.定理1:设,在的某个邻域内连续,并且,,则对任何,由迭代决定的序列收敛于.定理2:条件同定理 1,则定理3:已知方程,且(1) 对任意的,有.(2) 对任意的,有,则对任意的,迭代生成的序列收敛于的根,且.以上给出的收敛定理中的条件要严格验证都较困难,实用时常用以下不严格的标准:当根区间较小,且对某一,明显小于1时,则迭代收敛(参见附录3).2) 迭代法的加速:a) 松弛法:若与同是的近似值,则是两个近似值的加权平均,其中称为权重,现通过确定看能否得到加速.迭代方程是:其中,令,试确定:当时,有,即当,时,可望获得较好的加速效果,于是有松弛法:,松弛法的加速效果是明显的 (见附录4),甚至不收敛的迭代函数经加速后也能获得收敛.b) Altken方法:松弛法要先计算,在使用中有时不方便,为此发展出以下的 Altken 公式:,是它的根,是其近似根.设,,因为,用差商近似代替,有,解出,得由此得出公式;;,这就是Altken 公式,它的加速效果也是十分明显的,它同样可使不收敛的迭代格式获得收敛(见附录5).3. 牛顿(Newton)法(牛顿切线法)1) 牛顿法的基本思想:是非线性方程,一般较难解决,多采用线性化方法.记:是一次多项式,用作为的近似方程.的解为记为,一般地,记即为牛顿法公式.2) 牛顿法的收敛速度:对牛顿法,迭代形式为:注意分子上的,所以当时,,牛顿法至少是二阶收敛的,而在重根附近,牛顿法是线性收敛的.牛顿法的缺点是:(1)对重根收敛很慢;(2)对初值要求较严,要求相当接近真值.因此,常用其他方法确定初值,再用牛顿法提高精度.4. 求方程根(解)的其它方法(1) solve('x^3-3*x+1=0')(2) roots([1 0 -3 1])(3) fzero('x^3-3*x+1', -2)(4) fzero('x^3-3*x+1',(5) fzero('x^3-3*x+1',(6) linsolve([1, 2, 3; 4, 5, 6; 7, 8, 0], [1, 2, 3]')体会一下,(2)(5) 用了上述 1 3 中的哪一种方法以下是本实验中的几个具体的实验,详细的程序清单参见附录.具体实验1:对分法先作图观察方程:的实根的分布区间,再利用对分法在这些区间上分别求出根的近似值.输入以下命令,可得的图象:f='x^3-3*x+1';g='0';ezplot(f, [-4, 4]);hold on;ezplot(g, [-4, 4]); %目的是画出直线 y=0,即 x 轴grid on;axis([-4 4 -5 5]);hold off请填写下表:实根的分布区间该区间上根的近似值在某区间上求根的近似值的对分法程序参见附录1.具体实验2:普通迭代法采用迭代过程:求方程在附近的根,精确到第 4 位小数.构造等价方程:用迭代公式:,用 Matlab 编写的程序参见附录2.请利用上述程序填写下表:分析:将附录2第4行中的分别改为以及,问运行的结果是什么你能分析得到其中的原因吗看看下面的“具体实验3”是想向你表达一个什么意思.用 Matlab 编写的程序参见附录3.具体实验3:收敛/发散判断设方程的三个根近似地取,和,这些近似值可以用上面的对分法求得.迭代形式一:收敛 (很可能收敛,下同)不收敛 (很可能不收敛,下同)不收敛迭代形式二:收敛不收敛不收敛迭代形式三:不收敛收敛收敛具体实验4:迭代法的加速1——松弛迭代法,,迭代公式为程序参见附录4.具体实验5:迭代法的加速2——Altken迭代法迭代公式为:,,程序参见附录5.具体实验6:牛顿法用牛顿法计算方程在-2到2之间的三个根.提示:,迭代公式:程序参见附录6 (牛顿法程序).具体实验7:其他方法求下列代数方程(组)的解:(1)命令:solve('x^5-x+1=0')(2)命令:[x, y]=solve('2*x+3*y=0', '4*x^2+3*y=1')(3) 求线性方程组的解,已知,命令:for i=1:5for j=1:5m(i, j)=i+j-1;endendm(5, 5)=0;b=[1:5]'linsolve(m, b)思考:若,或是类似的但阶数更大的稀疏方阵,则应如何得到四、自己动手1.对分法可以用来求偶重根附近的近似解吗为什么2.对照具体实验2、4、5,你可以得出什么结论3.选择适当的迭代过程,分别使用:(1)普通迭代法;(2)与之相应的松弛迭代法和 Altken 迭代法.求解方程在附近的根,精确到4位小数,请注意迭代次数的变化.4.分别用对分法、普通迭代法、松弛迭代法、Altken 迭代法、牛顿切法线等5种方法,求方程的正的近似根,.(建议取.时间许可的话,可进一步考虑的情况.)上一页回目录下一页。

matlab实现图像的放大及旋转

matlab实现图像的放大及旋转

MATLAB是一个包含大量计算算法的集合。

其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。

函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。

在通常情况下,可以用它来代替底层编程语言,如C和C 。

在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。

MATLAB的这些函数集包括从最简单最基本的函数到诸如距阵,特征向量、快速傅立叶变换的复杂函数。

函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

(4)出色的图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和距阵用图形表现出来,并且可以对图形进行标注和打印。

高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。

可用于科学计算和工程绘图。

新版本的MATLAB 对整个图形处理功能作了很大的改进和完善,使他不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB 同样表现了出色的处理能力。

同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。

另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

(5)应用广泛的模块集合工具箱MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。

一般来说,他们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。

目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP 与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

Matlab动画演示教学

Matlab动画演示教学
y s ( A: =i x n) x a: a(; m x m xx ) y i  ̄n ) mn = (; y a i Ox Ixy n1 ; odOl x ̄ HB mi D hl l po x , ; l (y t , ' h l e'oo'10O, re'.' res e,0"r ̄mo e,o3 =i ( lr[ lmak r , kri ' 。 ae d 'xr; n e , " ,"ma  ̄ 4 e ' n lnt x; -e g ) h(
维普资讯
22 1

建 电

20 0 8年第 6期
Ma a 画演 示教 学 t b动 l

【 摘
萸 .张敬华 z
(1 . 福建农林 大学 计算机 与信 息学院 福建 福州 3 0 0 . 50 2 2 福建农林大学 计算机与信息 学院 福 建 福州 30 0 2、 50 2 要】 :介 绍了 Ma a l fb的功能与特点 , 阐述 了Mal t b在 高等数 学教 学中的作 用. 以高等数 学教 学中遇到的 问题为 a 并
例 , 细讨 论 了 MA L B应 用 于 高 等数 学 的教 学模 式 。 详 TA
【 关键词】 :Ma a ; t b 高等数 学教 学; l 可视化
0 Ma a 、 n b的动 画功 能与 特 点 ; i m了 1 MAIAB是 Ma1 rs 司 开发 的新 一 代 的科 学 与 工 程 计 例 1 l , 1 t l k公 Wo 算 软件 。 已经 成 为全 球 应 用 最 广 泛 最 流行 的软 件 之 一 . a a 自 m tb l 在 课 本 中 . 于 关 产 生之 日起 就具 有 方便 的数 据 可 视 化 功能 . 以将 向量 和 距 阵 用 l —lX i Sl a r i

用matlab解决几何问题

用matlab解决几何问题

本科学年论文题目用matlab解决几何问题院部数学与信息科学学院专业数学与应用数学指导教师肖静评阅教师肖静班级2008级 3 班姓名牟俊吉学号************2011 年5 月1 日目录摘要 (Ⅰ)Abstract (Ⅰ)1引言 (1)2利用 MATLAB绘制三维曲线 (1)3利用 MATLAB绘制曲面图形 (2)4 利用 MATLAB判定图形间的位置关系 (5)5利用MATLAB研究旋转曲面的性质 (6)结束语 (10)参考文献 (10)致谢 (11)摘要:将MATLAB的图形和动画功能应用于解析几何教学,可使教学形象生动.以图形问题为例,详细给出了实例的程序编写和动画实现过程,在解析几何教学中有一定的应用价值.关键词:MATLAB;解析几何;图形;动画;编程Abstract:Applying graph and animate function to instruction of analytical geometry and make instruction visual and living. By using examples of graphing, we give the programs and animate proceeding of the examples. It has some applying values in teaching of analytical geometry.Key words: MATLAB; analytical geometry; graph; animate; program1引言在解析几何的教学中,使用传统的教学方法,许多曲线及曲面的形成过程与变换过程只通过传统的教师讲授、静态图示就很难形象生动地表示出来.在解析几何教学中使用MATLAB软件辅助教学,不仅可以很容易绘制出复杂的立体图形,把曲线、曲面的形成和变化过程准确地模拟出来,而且还能够对它们进行翻转、旋转,甚至还能够轻而易举地实现图形的动画效果!这对提高教学效率和培养学生的空间想象能力可起到事半功倍的效果.下面结合实例从几个方面说明MATLAB在解析几何画图方面的应用.2 利用 MATLAB绘制三维曲线在空间解析几何中,各种曲线和曲面方程的建立都离不开图形,而空间曲线和曲面图形既难画又费时.借助MATLAB的绘图功能,可以快捷、准确地绘出图形,使教学变得形象、生动,有利于学生观察三维空间图形的形状,掌握图形的性质.一般地,MATLAB可用 plot3, ezplot3, comet3 等函数来画各种三维曲线.例如: 画螺旋曲线的图形,其参数方程设为:x=a*t*cos(t),y=- b*t,sin(t),z=c*t,使用plot3语句画螺旋曲线图形的方法如下(设 a=2,b=4,c=3):t=0:pi/50:10*pi;plot3(2*t.*cos(t),- 4*t.*sin(t),3*t);MATLAB用两条简单的语句就可以画出螺旋曲线(图 1),但上述方法是静态的,为了体现(圆锥 a=b)螺旋曲线的形成过程,可以使用的动画功能,改用以下一条语句:ezplot3(' 2*t*cos(t)' , ' - 4*t*sin(t)' , ' 3*t ' , [0,10*pi], 'animate' );可以看到一个红色的小球在绕螺旋曲线运动(图 2) .若觉得上述语句画出的图形在电脑上显示还是比较快,可以改用 comet3语句来完成.t=0:pi/50:10*pi;comet3(2*t.*cos(t),- 4*t.*sin(t),3*t);同样可以看到一个红色的小球在绕螺旋曲线运动(图 3)图1 图2图33 利用 MATLAB绘制曲面图形用 MATLAB绘制曲面时,一般地可以用 mesh、 surf、 ezmesh、ezsurf等函数来完成.解析几何中有一些常见的二次曲面:球面,椭球面,双叶双曲面,单叶双曲面,锥面,椭圆抛物面,双曲抛物面等.对于后两个,由于可以直接用Z表示,比如:椭圆抛物面: z=x2+y2;双曲抛物面2z=x2/4- y2/9;因此可以用meshgrid,mesh,surf函数直接完成(见图4、 5) .[x,y]=meshgrid(- 10:0.2:10);z=(x.^ 2+y.^ 2); mesh(x,y,z); (图4) [x,y]=meshgrid(- 10:0.2:10);z=(x.^ 2/4- y.^ 2/9)/2; mesh(x,y,z);(图5)图4图5从图 4 中可以看到,直接用 mesh 或 surf函数画出的曲面不一定美观,又比如画锥面: z2=x2+y2;若使用下列语句,则图出的图形如图6所示,不够美观.[x,y]=meshgrid(- 10:0.2:10);z=sqrt(x.^ 2+y.^ 2);mesh(x,y,z);图6这时可以考虑用其他方法,由于球面,椭球面,锥面等可用参数方程来表示:锥面: x =avcosu,y =bvsinu,z =cv;椭球面: x =acosvcosu,y =bcosvsinu,z=csinv;故可以用 ezsurf或 ezmesh 函数直接画出.这里设a=2,b=3,c=4,画锥面和椭球面的语句如下(见图 7、 8) .ezsurf(' 2*v*cos(u)' ,' 3*v*sin(u)' ,' 4*v' ,[0,2*pi],[- 10,10]);图7ezsurf(' 2*cos(v)*cos(u)' ,' 3*cos(v)*sin(u)' ,' 4*sin(v)' );图8当然,当 a=b 时,上述曲面也可以用旋转曲面的方法来画.因此,对不同的曲面要采用不同的画法,这样可以使图形更加美观.文献[3]给出一个通用的二次曲面画图程序,比较复杂,这里略.4 利用 MATLAB判定图形间的位置关系三维空间中的平面、曲线、曲面在实际生活中有着广泛的应用,学生掌握三维空间中图形的位置关系是解析几何教学的难点之一.借助MATLAB的三维绘图功能,可以在同一直角坐标系下快捷、准确地绘出图形,有利于学生观察掌握图形之间的位置关系,突破教学难点.例1:作出球面 x2+y2+z2=a2和圆柱面 x2+y2- ax=0 的交线———维维安尼(Vivian)曲线[1].此题通过联立球面方程 x2+y2+z2=a2和圆柱面方程 x2+y2- ax=0,得出维维安尼曲线的参数方程: x=acos2t,y=acost*sint,z=asint;利用函数 plot3,ezflot3 可以画出该曲线(图 10),但是利用 plot3 函数,仅仅画出了该曲线,还未能反映出两曲面的交的情况.利用MATLAB,可在同一直角坐标系中绘出球面与柱面,可以直观看出曲面相交的情形,这更有利于学生观察维维安尼曲线的形状.输入以下语句(或事先编好M文件,a=4) .%柱面的 MATLAB程序[a,b,c]=cylinder(2,100);c(1,:)=- 4;c(2,:)=4;mesh(a+2,b,c); hold on%球面的 MATLAB程序[u,v]=meshgrid(- pi:0.2:pi);x=4*sin(u).*cos(v);y=4*sin(u).*sin(v);z=4*cos(u);mesh(x,y,z)图9运行上述语句,可得到两曲面相交的图形,利用 MATLAB的图形旋转功能,从不同角度观察图形,上述图 9 是进行旋转后的结果.5 利用 MATLAB研究旋转曲面的性质在解析几何教学中,旋转曲面的性质仅仅通过教师的讲解和板书的静态演示很难让学生掌握,利用MATLAB演示旋转曲面的形成过程则可突破这一教学难点. 用MATLAB画旋转曲面可用函数 cylinder(R,N),只要 R为不同的曲线,再加上平移变换则可.例 2:画旋转单叶双曲面 x2/a2+y2/b2- z2/c2=1和旋转双叶双曲面x2/a2+y2/b2- z2/c2=- 1解:取 a=b,并用参数方程来表示,则 MATLAB 画图语句如下,运行后结果如图 10、 11.%单叶双曲面t=0:0.1:2*pi; y=20+5*cos(t);[a,b,c]=cylinder(y,100);mesh(a,b,c- 0.5);图10%双叶双曲面e=0:0.1:10; h=sqrt(3*e);[a,b,c]=cylinder(h,100);c1=c+0.5; mesh(a,b,c1)hold on; mesh(a,b,- c1)图11上述画图过程是静态的,没有表现出曲面的旋转过程,如何使画图过程是动态的呢?可采用编程的方法来解决.例3:演示将圆(y- b)2+z2=a2绕 Z轴旋转所得的图形解:按数学原理,绕 Z轴旋转,相当于 y用 sqrt(x2+y2)代替,则可得到旋转曲面,画图时,根据圆的特点,采用参数方程表示,编程序如下:a=5;b=20;t=0:pi/30:2*pi;n=length(t);y=b+a*cos(t);z=a*sin(t);x=zeros(1,n);plot3(x,y,z)hold on ;pause(1)for k=0:pi/60:2*pi;x1=y.*sin(k);y1=y.*cos(k);plot3(x1,y1,z)pause(0.01);grid on; hold on;view([- 10,100])endhold off图12运行结果如图 12所示.本程序直观形象地演示了圆绕 Z轴旋转而形成圆环的过程.类似地,将程序中圆的方程分别改为直线、椭圆、双曲线、抛物线的方程,运行程序则可动态地演示绕Z轴旋转而成的旋转圆锥面、椭球面、单叶旋转双曲面和旋转抛物面的形成过程.康托给分析建立了严格的集合论基础.而在对实数连续性的描述中,闭区间套定理是一个基本的定理.因此,在对该定理推广前有必要先回顾一下闭区间套定理的内容.结束语动点的轨迹和曲面截痕轨迹是解析几何教学中的又一个难点,而描绘动点轨迹和曲面截痕轨迹的形成过程是传统教学无法实现的.使用MATLAB制作动画,可以轻易实现空间动点的轨迹和曲面截痕的轨迹的形成过程,使学生直观地观察动点变化形成轨迹的过程和曲面截痕轨迹形成的过程.具体例子可以参考文献[4,5],这里略.参考文献:[1]吕林银,许子道.解析几何(第三版)[M].北京:高等教育出版社, 1987.[2]王沫然.MATLAB与科学计算(第二版)[M].北京:电子工业出版社, 2003.[3]李丽,王振领.MATLAB工程计算及应用[M].北京:人民邮电出版社,2001.[4]周德亮,白岩.用 MATLAB解决高等数学中的图形问题[J].数学的实践与认识,2002,23(1):122- 124.致谢在写论文的过程中我遇到了很多麻烦和困难,在我感觉力不人心的时候老师给了我很大的帮助.同学也给我很多鼓励.在他们的支持下我写完了这篇论文.写完之后我感觉有很大收获.因为这篇论文是我一直想写的.。

matlab实现图像的放大及旋转

matlab实现图像的放大及旋转

MA TLA‎B是一个包‎含大量计算‎算法的集合‎。

其拥有60‎0多个工程‎中要用到的‎数学运算函‎数,可以方便的‎实现用户所‎需的各种计‎算功能。

函数中所使‎用的算法都‎是科研和工‎程计算中的‎最新研究成‎果,而前经过了‎各种优化和‎容错处理。

在通常情况‎下,可以用它来‎代替底层编‎程语言,如C和C 。

在计算要求‎相同的情况‎下,使用MA T‎L AB的编‎程工作量会‎大大减少。

MA TLA‎B的这些函‎数集包括从‎最简单最基‎本的函数到‎诸如距阵,特征向量、快速傅立叶‎变换的复杂‎函数。

函数所能解‎决的问题其‎大致包括矩‎阵运算和线‎性方程组的‎求解、微分方程及‎偏微分方程‎的组的求解‎、符号运算、傅立叶变换‎和数据的统‎计分析、工程中的优‎化问题、稀疏矩阵运‎算、复数的各种‎运算、三角函数和‎其他初等数‎学运算、多维数组操‎作以及建模‎动态仿真等‎。

(4)出色的图形‎处理功能MA TLA‎B自产生之‎日起就具有‎方便的数据‎可视化功能‎,以将向量和‎距阵用图形‎表现出来,并且可以对‎图形进行标‎注和打印。

高层次的作‎图包括二维‎和三维的可‎视化、图象处理、动画和表达‎式作图。

可用于科学‎计算和工程‎绘图。

新版本的M‎A TLAB‎对整个图形‎处理功能作‎了很大的改‎进和完善,使他不仅在‎一般数据可‎视化软件都‎具有的功能‎(例如二维曲‎线和三维曲‎面的绘制和‎处理等)方面更加完‎善,而且对于一‎些其他软件‎所没有的功‎能(例如图形的‎光照处理、色度处理以‎及四维数据‎的表现等),MA TLA‎B同样表现‎了出色的处‎理能力。

同时对一些‎特殊的可视‎化要求,例如图形对‎话等,MA TLA‎B也有相应‎的功能函数‎,保证了用户‎不同层次的‎要求。

另外新版本‎的M A TL‎A B还着重‎在图形用户‎界面(GUI)的制作上作‎了很大的改‎善,对这方面有‎特殊要求的‎用户也可以‎得到满足。

(5)应用广泛的‎模块集合工‎具箱MA TLA‎B对许多专‎门的领域都‎开发了功能‎强大的模块‎集和工具箱‎。

基于MATLAB的图形动画研究

基于MATLAB的图形动画研究

第 一 种 方 式 是 以质 点 的 方 式 在 进 行 动 画 , 它 即
只 能实 现一维 数 组 的动 画 , 能 实 现 高 维数 组 . 不 第
二 种 方 式 有 一 个 非 常 大 的 缺 点 , 就 是 系 统 屏 幕 的 那 色 彩 品 质 只 能 应 用 于 2 6色 . 三 、 种 方 式 运 用 5 第 四 得 最 多 , 理 论 上 使 用 第 三 方 式 可 以 完 成 比较 复 杂 在
M TA A L B是 一 种 集 计 算 功 能 、 号 运 算 、 据 符 数
可视化 等强 大功 能于一 体 的数学 工具 软件 , 仅可 不
以 很 轻 易 地 绘 制 复 杂 的 立 体 图形 , 且 还 能 够 对 它 而 们 进 行 翻 转 、 转 以及 图 形 的 动 画 生 成 . 旋
关 键 词 : 次 曲 面 ;图形 ; 二 MAT I AB动 画
中 图 分 类 号 : P36 5 T 1.
文献标识码 : A
文 章 编 号 :6 1 1 2 2 1 ) 6— 0 9— 3 1 7 —6 3 ( 0 0 0 0 5 0
解 析 几 何 是 用 代 数 方 法 研 究 几 何 图 形 的 一 门 学 科 , 好 解 析 几 何 需 要 较 强 的 空 间 想 象 能 力 才 能 学 将方 程与几 何 图形联 系起 来 . 统 的教学 方式 很难 传
1 4 以 电 影 的 方 式 呈 现 动 画 .
旋 转 3 0 时 , 一 端点 的轨 迹 显 然就 是 圆. 用 图 6。 另 使
形 动 画 方 式 三 完 成 该 动 画 . 段 在 运 动 过 程 中 不 留 线
下 轨 迹 , 除 模 式 选 择 xr线 段 上 的 动 点 应 当 留 下 擦 o,

基于MATLAB的凸轮机构运动分析与动画模拟

基于MATLAB的凸轮机构运动分析与动画模拟
“ 出” — 其 回调 函数 为 c s. 退 — l em o
在 M TA A L B中 .用 户可采 用 两种 方 法来 制 作动 画 : 一种是 先 将 制作 的 图 片存储 起 来 , 后 然 按照播 放 电影 的方 式将 它们按顺 序播 放 出来 ( 称
电影 动 画) :另一 种是连 续 不断地 擦除并 重 画 图
l3 3
基Байду номын сангаас孑 MA L T AB硇 凸轮相构 运动 分 析 与 动 画 模 拟
罗世 民 杨 春辉
( 华东交通大学 汀两 南昌 30 1 ) 30 3

要 : 文 以对 心 滚 子直 动从 动件 盘 形 凸轮 机 构 为 实例 , 用 MA A 71 件 强 大 的科 学 计 算和 绘 图 本 利 TL B . 软
功 能 . 发 了凸轮 机 构 的运 动 分 析和 动 画 仿 真 系统 。 开 关键 词 : 构 ; 动 分 析 ; 画模 拟 ; T A 机 运 动 MA L B
中图分类号 : H122 T 1.
文献标识码 : A
文章编号 :0 8 7 5 (07 0 一 1 3 O 10 — 3 4 20 )6 O 3一 3
形 中的更新对 象 。 得每 次重 画过 程都 是连 续 的 使 ( 称实 时动 画) 对 凸轮机 构的动画 可采用实 时动 。
画 。先 根据 实际轮 廓线方 程计算 出初 始 图形 , 然
后用 MA L B的矩 阵旋 转 功能 。连续 地 重 画更 TA 新 图形 。 凸轮匀 速转 动的 角速 度为 o ia 转 动 设 mg , 周数 为 I 1 .可采用 实 时动画 的方 法编 写 cm v a moe (,, ea mi ,) 函数 文件 , r td t, g n . r o a m 并在 此 函数 文件 中调用 位移 线图 函数文 件 。 将其存 入 MA L B 并 TA
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[x,y,z]=generatrix():得到母线的坐标点,坐标点保存到x、y、 z中,通过修改这个函数可以实现将任意的空间曲线段做母线。如程 序4、程序5就是不同的母线。
[T1,T2]=rotateaxis(x0,y0,z0,l,m,n):得到旋转矩阵。母线上的任意 点P围绕旋转轴旋转时,需进行如下三步空间变换[3] :
每次演示都需要运行一次程序,不像电影方式,可以创建一次,播放
多次。
4 结束语
Matlab具有强大的绘图功能。解析几何教学的实践表明,应用 matlab动画演示曲线、曲面等几何图形的生成过程对老师的教学、学 生的学习起到了非常大的帮助。Matlab不仅可以动画演示曲线和曲面 的生成过程,而且可以动画演示直线之间、直线与平面之间、平面之 间的位置关系,动画演示切线、切面、渐近线的变化过程等。
-sin(derta),cos(delta),0,0; 0,0,1,0; 0,0,0,1]; for i=1:40; ox=xyz(:,1);oy=xyz(:,2);oz=xyz(:,3); xyz=xyz*T1*zrot*T2;%旋转母线 xx=[ox,xyz(:,1)];yy=[oy,xyz(:,2)];zz=[oz,xyz(:,3)]; surf(xx,yy,zz); pause(0.1); M(i)=getframe;%得到动画帧 End
参考文献 [1] 苏金明,王永利 . MATLAB 7.0实用指南[M] . 北京:电子工业出 版社,2004 [2] 吕林银,许子道 . 解析几何(第三版)[M] . 北京:高等教育出 版社,1987 [3] 孙家广,杨长贵 . 计算机图形学(第三版)[M] . 北京:清华大学出 版社,1998 作者简介 郑凤川(1966-),讲师,工作于自贡职业培训学院二校 区。
b=5;c=6;
z=-30/4:0.5:30/4;
y=b*sqrt(1+(z.*z)/c^2);%二次曲线
x=zeros(1,size(y,2));
matlab还提供了movie2avi函数可以将矩阵中的一系列动画帧转换
成视频文件-avi文件[1]。这样,即使脱离了matlab环境都可以播放动
画。
在程序3中,去掉M(i)=getframe也可以动画演示旋转过程,只是
t=0:pi/40:2*pi;fx=@(t)a*cos(t).^2;
fy = @(t)a*cos(t).*sin(t);fz=@(t)a*sin(t);
View(3);
%动态绘制维维安尼曲线
Ezplot3(fx,fy,fz,'animate');
(2)使用comet和comet3函数绘制动
画。
Comet函数和comet3函数可以分别在
(收稿日期:2008·06·23)
(接152页)图 3简单使用LINE、CIRCLE、TRIM命令,难度较低。 图4使用CIRCLE、TRIM等命令,需要使用圆弧连接圆弧,增加了一 定的难度。
采用适应认知差异的实例教学方式,利于因材施教,避免了课堂 上部分学生由于内容相对难度较大听不懂、不会做或者完成作业后无 所事事的情况,使得每个学生在课堂上都感觉到自己真正能参与其 中,从而调动了全体学生的积极性,使得学生都各尽所能,都能体验 到学有所成,都有一种成功的喜悦和成就感。
S1:首先P点与旋转轴一起通过平移、旋转,使旋转轴与z轴重 合,T1为此时平移与旋转矩阵之积。
S2:然后P点围绕z轴旋转,设此时旋转一定角度的旋转矩阵为 zrot;
S3:最后需将P点随同旋转轴回到原来位置,这步同S1刚好相 反。T2为此时平移与旋转矩阵之积。
因此任意点P围绕任意直线旋转,只需要按序乘以T1、zrot、 T2就可以了。函数中x0、y0、z0为旋转轴上任意已知点坐标;l、m、 n为旋转轴分别在x、y、z轴上的方向矢量。
图1 维维安尼曲线
二维和三维空间上根据给定的一组坐标点的轨迹动态运动一个类似彗
星的图形 ,形成动画效果[1]。
2 以重绘方式实现动画
使用matlab的图形绘制函数不断重复绘制图形对象,重绘过程中 递增式地改变图形对象位置将产生动画效果。在重复绘制图形对象的 过程中之所以能产生动画效果是由于对原来的图形对象进行了擦除处 理。Matlab的图形绘制函数允许采用不同的擦除模式来擦除原来的对 象,不同的擦除模式将产生不同的动画效果。擦除模式是通过设置 “EraseMode”属性来完成的,一共有三种擦除模式 : [1]
none :重新绘制图形对象时不擦除原来的对象,这种模式可动 态演示图形的生成过程,如曲线和旋转曲面的生成过程。
background :在重新绘制图形对象之前,用背景色重绘对象来达 到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何 图形。
Xor :在重新绘制图形对象之前,只擦除原来的对象,不会擦除 其他对象或图形。这种模式能产生图形对象移动的效果。
1 使用动画函数演示曲线轨迹
(1)使用ezplot3函数绘制动画。
使 用 e z p l o t 3 可 以 绘 制 三 维 参 数 函 数 , 函 数有 5 种 语 法 格 式 : ①
ezplot3(x,y,z); ② ezplot3(x,y,z,[tmin,tmax]); ③ ezplot3(...,'animate');
165
2 0 0 8 年 第 1 0期
教科园地
程序3是实现将任意的母线围绕任意的旋转轴旋转形成旋转曲面 的过程动态演示[2],并保存动画帧。运行程序3后可以运行movie(M,10) 播放动画10次。程序3中调用了三个自定义函数,三个函数的具体功 能是:
setaxis(MIN,MAX):根据MIN,MAX设置三维空间坐标的 最大值与最小值,并且进行一些其他设置。
程序2实现的是动态演示摆线的生成过程,图2(a)(b)是两个不同 阶段的摆线轨迹[2]
程序2: function drawtrace() axis([0,300,0,50]);hold on; axis image;set(gcf,'Position',[520,520,500,100]); a=20;alpha=0:pi/80:2*pi; cx=a*sin(alpha);cy=a*cos(alpha)+a; ocx=cx;lsx=0;lsy=a;px=0;py=0; LX=[lsx,px];LY=[lsy,py]; %绘制半径 lh=line(LX,LY,'EraseMode','xor','Color','b'); %绘制圆 ch=plot(cx,cy,'c.','EraseMode','xor','MarkerSize',1); %绘制轨迹 ph=plot(px,py,'r.','EraseMode','none','MarkerSize',5); pause; for theta=0:pi/80:5*pi; px=a*(theta-sin(theta)); py=a*(1-cos(theta)); lsx=px+a*sin(theta);cx=ocx+lsx; LX=[lsx,px];LY=[lsy,py]; set(lh,'XData',LX,'YData',LY); set(ch,'XData',cx,'YData',cy,'Color','r'); set(ph,'XData',px,'YData',py); Drawnow; pause(0.1) end
关键词 matlab 解析几何 几何图形 动画演示
解析几何是用代数方法研究几何图形的一门学科,是数学中最基 本的分支学科之一,也是科学技术中最基本的数学工具之一。学好解 析几何需要较强的空间想象能力才能将方程与几何图形联系起来。如 何向学生描述空间中的图形,帮助学生更好地理解几何图形是许多数 学老师感到困难的事情。老师一般只能在黑板上手工绘制几何图形; 或者以图片或实物模型方式演示几何图形。这种传统的教学方式很难 绘制出真实的、具有立体效果的几何图形,且不能从全方位、多角 度、任意大小观看几何图形,更不能动态演示许多曲线和曲面的生成 过程。在解析几何的多媒体教学中,可以运用matlab的图形绘制功能 辅助教学。使用matlab辅助解析几何教学的具体方式有:①应用绘图 函数自动绘制几何图形;②交互式自由旋转图形,可从不同角度观察 几何图形;③交互式绘制图形;④演示空间中图形间位置关系;⑤动 画演示几何图形的生成过程。本文将介绍几种使用matlab动画演示几 何图形生成过程的方法。利用这些方法可以演示一些曲线和曲面的动 态生成过程,使教学内容形象、生动,提高学生的理解能力和学习积 极性。
“repeat”按钮。
程序1:
function weiwei()
hold on;m=5;axis([-m,m,-m,m,-m,m]);
axis image;a=5;
%画圆
[x1,y1,z1]=sphere(30);surf(x1*5,y1*5,z1*5);
%画圆柱体
[x,y,z]=cylinder(a/2,40);mesh(x+a/2,y,z*10-5);
教科园地
2008年第10期 164
用Matlab动画演示几何图形的几种方法
郑凤川
(自贡市职业培训学院计算机教研室)
摘 要 本文将matlab的图形绘制功能应用到解析几何的教学中,介绍了几种动画演示几何图形的方法。实践证明,通过matlab动 画演示一些几何图形的生成过程能帮助学生加深对几何图形的理解,使教学内容生动形象。
④ ezplot3(axes_handle,...); ⑤ h = ezplot3(...)。 其 中 使 用
ezplot3(...,'animate')绘制曲线时可以自动动态演示曲线的轨迹[1] 。程序
1实现动态显示维维安尼曲线的轨迹[2] ,从图1可以看出,有一个红点
在绕曲线运动。如果想再次观看运动点的运动情况,可以点击
(a)双曲线Biblioteka 转形成(b)直线旋转形成图3 单叶双曲面
相关文档
最新文档