毕业设计(论文)MATLAB实时动画制作.doc

上传人:laozhun 文档编号:3976788 上传时间:2023-03-30 格式:DOC 页数:21 大小:1.06MB
返回 下载 相关 举报
毕业设计(论文)MATLAB实时动画制作.doc_第1页
第1页 / 共21页
毕业设计(论文)MATLAB实时动画制作.doc_第2页
第2页 / 共21页
毕业设计(论文)MATLAB实时动画制作.doc_第3页
第3页 / 共21页
毕业设计(论文)MATLAB实时动画制作.doc_第4页
第4页 / 共21页
毕业设计(论文)MATLAB实时动画制作.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《毕业设计(论文)MATLAB实时动画制作.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)MATLAB实时动画制作.doc(21页珍藏版)》请在三一办公上搜索。

1、1 绪论1.1引言1831年初,一名男子名为约瑟夫高原的法国人放置了一个很好的图画,根据磁盘机、光盘机,以一定的秩序播放。这样一台机器和一个窗口,可以用来观看活动图像效果。在机械传动的过程之中,与旋转磁盘的磁盘映像。从观察窗观看,图片就会运动起来,这是原始的动画原型。随着历史脚步的推进,我们已经能将动画从在手动的机器上实现发展到了再计算机上实现了。在过去的一百八十年中我们的动画技术越近成熟,它已经发展成了一个独立成熟的行业。到如今,计算机动画制作的方法有很多种,我们最常用的就是Flash软件这是由macromedia公司推出的交互式矢量图和 Web 动画的标准。网页设计者使用 Flash 创作

2、出既漂亮又可改变尺寸的导航界面以及其他奇特的效果。但是Flash是要用户自行绘图才能进行动画的制作,而很多函数的图形是很难自己徒手画出来的,这样软件在数学领域是不适用的。计算机动画,计算机图形学的一个重要分支,其应用领域十分广泛,包括电影和电视作品,电子游戏,可视化仿真,科研,教学和培训,工业设计,军事模拟,过程控制,绘画,建筑等上。即使在电脑动画骨科及创伤中药理论也有一个巨大的作用,特别是与中医手法复位方法使用电脑动画技术的展现,为学生提供一个良好的学习环境,并能实现临床实习的效果。而Matlab软件,虽然它是特殊的数据处理软件,但它有一个1)具有完善的图形处理功能,实现计算结果和编程可视化

3、; 2)友好的用户界面和关闭的数学表达式自然语言,它是容易学习和掌握; 3)功能丰富的应用工具中,为用户提供方便,实用的功能,如处理工具。在MATLAB环境中,我们可以很容易地使用MATLAB原函数图形的速度。MATLAB的发展有一个比较完整的动画制作环境和功能,通过动画,我们可以更好地了解每个属性的特点和变化的函数。这一次,我们选择使用MATLAB软件的帮助,我们将实现在电脑动画技术。1.2课题背景MATLAB( Matrix Laboratory,即“矩阵实验室” )是一套功能十分强大的工程计算及数值分析软件。目前,它已经成为世界上应用最广泛的工程计算软件之一。在美国等发达国家的理工类大学

4、里,MATLAB是大学生必须掌握的一种基本工具,而在国外的研究设计单位和工业部门,它更是研究和解决工程计算问题的一种标准软件,并被誉为工程技术人员必备软件之一。MATLAB除了其主程序外,还含有Simulink动态系统仿真软件和MATLAB工具箱,这使其成为工程教学中最流行的计算机辅助设计和辅助教学软件之一,越来越多的理工科大学生、研究生和科学技术工作者正在学习和使用MATLAB语言,将其作为实现计算机数字仿真动画的计算机语言工具。MATLAB动画,具有以下优点:1)易于使用的编程语言是一种解释性语言,高级管理人员的矩阵,其中包含的报表控件,功能,结构,数据输入和输出,和面向对象的编程功能。用

5、户在命令窗口中,输入语句和行政命令将同步,你可以写的第一个大型复杂的应用(M文件),然后一起工作。新版本的语言是基于最流行的基础的VC + +语言,语法特征和VC + +语言是非常相似的,更简单,更符合科学和技术人员在写作的数学表达式。使它更加有利于计算机专业人员。和语言的可移植性,拓展性强,计算的深度的重要原因,所有领域的科研和工程。2)短期和高效的代码语言的基本单位的数据矩阵,没有预先确定的尺寸,功能,最基本和重要组成部分,将有很多算法编程,大量库函数的数学问题解决许多问题工具箱,只要熟悉算法的基本特征函数的调用格式和参数的具体含义电话准备功能可以迅速解决的许多问题在他们自己的专业领域,不

6、用花很多时间达到常规算法,使代码的书面文件是一个简单的和短期的,有效和方便的解决专业问题。3)一个强有力的科学和计算机数据处理能力是一组包含了大量的计算算法。它拥有超过600名工程师使用数学函数,可以方便的实现用户各种计算能力。函数使用的算法在计算科学和工程的最新研究成果,通过各种优化及容错处理。一般来说,你可以用它来取代底层编程语言(如程序使用编程将大大减少工作量计算的需求。集函数,从最简单的最基本的功能如矩阵的特征向量复杂的功能,快速傅里叶变换功能可以解决这个问题,一般包括矩阵运算、线性方程组的程序求解微分方程和偏微分方程,象征手法,傅立叶变换和分析统计数据的优化问题,工程稀疏矩阵的运算,

7、各种复杂运算,三角函数和其他基本算术,多维数组运算,图形建模与动态仿真。4)便利的图形处理功能使用很方便的图形,它能吸引各种各样的图形,包括二维图形和三维图形,图形也可以修改和控制提高图形性能。提供二级绘图操作:一是减少绘图操作。在高层次的图形操作,用户不需要太多的考虑图的细节,只是给出一些基本参数吸引图形用户需求。图形处理操作,用户可以在口袋里的图形操作,图像表现为用户创造一个巨大的,没有丝毫的空间的束缚。1.3 MATLAB动画制作的原理动画是我们生活中离散静态图形的连续播放或快速利用人眼视觉是造成连续动态效果的感觉。动画,软件,根据这一原则,将准备处理图像的变化使动画。和软件是基于矩阵运

8、算的工程科学计算软件,也不能仅仅依靠图像编辑器可视化动画,但底部的元素的矩阵,逻辑,功能的变化waixian图形动画的实现。在环境中,每个图形元素是一个对象,每个对象都有一个对应的唯一标识符(手柄),每个对象都有一组特征的基础上,需要调整的性质反映的对象对象的属性,通过设置修改这些属性,用户可以调整的灵活性,改变图形对象。绘图的基本思路是,它实现的基本方法和原则的重要动画功能。常见的语句中修改处理图形对象的属性。基本语法:集(小时,“属性”,propertyvalue),那里是图形处理Name属性名称,属性值中的propertyvalue,允许在一个声明在同一个图形处理许多不同的属性值设置。常

9、用画图的功能界定的根本性变化的元素的动画,基本语法:线(,),和坐标点数据。功能线处理共同的属性:颜色(颜色),代码(x数据)ydata(Y轴数据),zdata(Z轴数据),erasemode(擦除模式),linestyle(线性),标记(点式),markersize(大小),可见(能见度)等。画线功能的运动点,循环体巧妙结合,设置功能设置特性线处理清除,你可以创造惊人的动画。动画是一个非常有用的功能:旋转,其功能是实现旋转的句柄图形中,基本语法:旋转(小时, Z , Z 阿尔法),那里是旋转中心轴的旋转角,阿尔法。旋转功能实现动画往往与函数,它可以在循环体中“击败”来处理图形和播放在周期体外

10、电影功能将得到的图形,这种做法有点像照相机拍摄的照片数量动态投影从动画。1.4课题研究的方法在MATLAB中的动画设计,如何制作动画,更常用的方法,手段:改变一个参数的图形,产生一组动画;A3三维图形,并不断改变其角度,让一组图像;3D图形旋转,也可以让在MATLAB组动画,图形的颜色变化,也可以产生不同的动画效果等。目前MATLAB动画有四个主要方面:1到粒子的运动方式呈现动画轨迹。这是最简单的动画生成方法,其原理是创建一个粒子沿着弧形轨迹移动操纵动画的议案。基本方法是:使用彗星或彗星来描述粒子的运动轨迹。2要旋转的彩色图像方式呈现动画。使用这种方法来实现动画必须使用spinmap的功能来实

11、现动画。然而,在这样一种方式的缺陷是非常明显的,它需要系统屏幕颜色颜色质量只能应用于表256个颜色,否则是无法看到的动画效果。因此,我们很少用这种方式来实现动画。3movie模式。这是中存储的图片,然后将这些图片显示多个图像的方式。此方法是根据Flash软件用来实现动画做的原则,但它的缺点是需要更多的内存,保留所有图片。基本的使用方法如下:1)的getFrame抓取图形动画图像(通常使用语句);2)电影放映。的对象4method。在MATLAB处理图像,可以改变形象,而不改变背景图案。是不是能够产生复杂的动画。1)计算活动对象的新位置,并在新的位置,它显示;2)删除原来的位置原来的对象,刷新屏

12、幕;3)重复步骤1,2。1.5论文构成本文分为三个部分:第一部分:绪论简要介绍了MATLAB动画制作的背景知识和方法;第二部分:详细介绍MATLAB制作动画的基础知识和制作步骤;第三部分:分析实例;2 MATLAB实时动画制作概述2.1 了解MATLAB下一代可以追溯到70年代,教授克里夫莫勒,主任的新墨西哥大学计算机科学在美国系统,在线性代数课程教学学生想教学生使用的线性代数包linkpack和特征值的计算是基于包eispack,但发现其他高级语言程序设计很不方便,于是,德莫悬崖为学生写教授使用方便linkpack和eispack程序和名字的一个借口,这是实现原型。是早期的语言,虽然功能很简

13、单,但作为一个自由软件,或吸引大量用户。经过几年的校际蔓延,小约翰推动,由约翰小,悬崖摩尔和史提夫邦格特,和代表,公司成立于1984,正式推出第一个版本的软件(版本)。自那时以来,核心,使用的语言,更多的功能,乐清市,除了原有的数值计算功能,但也有新的图形功能。matlab-day生产方便的数据可视化功能,矢量和阵列图形表达,和地图,标记和打印。高水平的绘画,包括二维和三维可视化,图像处理,动画和表情映射可用于科学计算与工程制图。图形能力的新版本是一个很大的改进和完善,它不仅所有功能的通用数据可视化软件(如2、3面曲线和加工,等)更加完善,和其他一些软件(如图形处理性能数据,浅色手柄和四尺寸,

14、等)中。图形在数学问题,最初人们做更加有说服力的实验或操作使用图形表达。因此,提供了一个矩阵或向量数据的绘图功能。与图形,我们可以实现动画,这是最基本的。因此,我们必须先学会如何画图形仿真。2.2 Matlab绘图2.2.1二维图形的绘制就如我们在上文中提到的,MATLAB为用户提供了很多使用且功能强大的函数,这其中就包含了绘制二维图形的函数,如下表所示:函数功能描述plot二维绘图plotyyy轴为两条不同数据的二维绘图semilogxx轴以对数为刻度的二维绘图semilogyy轴以对数为刻度的二维绘图loglogx轴和y轴都以对数为刻度的二维绘图figure选择图像subplot图形显示时

15、分割窗口title显示图形的标题xlabel在x轴上加上标号ylabel在y轴上加上标号area绘制面域图fill二维填充图bar二维条形图表2-1最常用的绘图功能绘图功能之一,可以很简单,画任意二维图形。基本情节函数的调用格式如下:图(Y)(X1,Y1,.)(X1,Y1,LineSpec1,.)(.“的PropertyName,PropertyValue,.)H =(.)类型图(Y)如果y是真实的,然后绘制标y和y坐标值折线连接,y是虚数,然后绘制连接(真实(Y)要提取这些部件(Y)折线。画(X1,Y1,.)坐标折线连接,但要注意X1,Y1尺寸匹配不一定需要x1和y1阴谋(X1,Y1,.)相

16、同的尺寸。关闭X1,Y1数组,你可以使用函数图绘制多边形。参数LineSpec1是用来设定图形的线形、标记符号、颜色等。我们可以编写得到一个最简单的图形,例如执行以下的代码:x=0:2*pi;y=sin(x);plot(x,y);其他的二维函数在本文中就不一一介绍了,总之我们通过以上的两个函数就能知道在Matlab中如果知道了一个函数和它的取值范围,那么我们很容易就能得到它的图形。2.2.2三维图形的绘制更多的流动性的三维图形,MATLAB提供了一套丰富的功能东西来绘制三维图形。绘制三维图形绘制二维图形非常相似,其中有许多是二维绘图从基础上延长。绘制三维图形功能如下:函数功能描述bar3、ba

17、r3h垂直三维长条图、水平三维长条图cylinder圆柱图fill3使用填充的方式画出三维多边形plot3三维曲线图pin3三维饼状图slice立体切片图sphere三维立体球形图ellipsoid椭圆体图形waterfall瀑布图contourc、contour3等高线计算、三维轮廓图hidden透明度作图meshe结合网目图和等高线图mesh三维网目图pcolor叠影色绘制surf三维表面图surfc结合表面图和等高图surfl具有亮度操作的三维表面图表 2-2plot3函数的最basic3D的图形,它是二维图形绘制阴谋有关的功能的功能扩展到三维空间,用于draw3D曲线。PL3funct

18、ion和血小板功能的使用是非常相似,其调用格式:巴解组织(X1,Y1,Z1.)PL(X1,Y1,Z1的,LineSpec1,.)(plt3.“的PropertyName,PropertyValue,.)也许你知道,每个组的X,Y,Z组成曲线坐标参数,选项定义和情节相同的功能。当X,Y,Z是相同的向量,即X,Y,Z轴对应的元素形成一个立体的曲线。当X,Y,同维矩阵,检测的事情,与X,Y,相应的列element3D曲线,曲线的数目等于矩阵的列数。你可以使用PL3绘制或简单或复杂的三维图形,表格如下:T = 0时:pi/100:2 * PI;plot3(COS(T)的罪恶(T)的,T);在现实生活中

19、,我们常看到的是三维图形,所以3D图形将让人们更好地利用空间想象力,以模拟现实。三维实际上是一个两维的扩展,从两米以上,可以比较,many3D图形功能in2D的图形功能基于黄飞鸿digital3and形式的学习二维图形渲染,for3D图形不能的问题。2.2.3图轴的控制在上面三种不同的图形绘制中,我们都会看到图形基本上都会出现有坐标轴,这也是MATLAB本身是为了解决数学问题而设置的。这也算是MATLAB的一个特色,坐标轴可以使得我们更好的去了解一个函数的图形的变化和规律,让我们更加直观地看懂图形。那么,在MATLAB中我们可以通过对axis、grid、hold、box等函数的多种操作方式来控

20、制坐标轴的大小和显示的方式。它的常用格式如下:axis(xmin xmax ymin ymax)axis(xmin xmax ymin ymax zmin zmax cmin cmax)axis auto 设置缺省值axis manual 设置当前值不变aixs tight 设置当前数据为坐标范围axis fill 使得坐标充满整个绘图区axis ij 矩阵式坐标,原点在左上方axis xy 直角坐标,原点在左下方axis equal 等长刻度坐标轴axis image 等长刻度且数据框紧贴数据范围axis square 产生正方形坐标轴axis vis3d 三维防止图形大小变化axis no

21、rmal 缺省坐标轴axis off 取消轴背景axis on 打开轴背景grid on 打开分格线grid off 关闭分格线hold on 在当前坐标轴图形里绘制数据hold off 重新绘制数据图形,即置换当前的图形对象box on 显示坐标轴边框box off 关闭坐标轴边框除了图轴的控制外,MATLAB还提供了很多对于图形修饰的函数,在这里就不介绍了。在知道的基本的绘图方法之后,我们就可以开始制作动画了。在MATLAB中动画的制作和图形的绘制一样都有现成的函数可以调用,这又一次的显示出了MATLAB功能的强大。我们只要充分了解MATLAB制作动画的函数和函数调用格式,实现动画是很容易

22、的事情。下面我们来看看动画的制作。2.3动画制作以动画来显示结果,除了可以让绘图更为生动之外,还可以立即比较出与原始图形的差异,深入强调绘图的重点所在,因此接下来将介绍在Matlab中绘制动画的几种方式与应用。在目前的MATLAB制作动画过程中,最常用的就有4种方法。其中电影动画和程序动画是最方便的。2.3.1以质点运动轨迹的方式呈现动画以这种方式被视为在绘制的动画,动画界面非常简单,主要解决的问题点,线。但现在简单的点,线动画已经无法满足用户多方面的要求。这种方式主要是用双功能彗星和comet3绘制二维和三维动画。彗星和comet3使用如下:(1)彗星(是)(四)显示粒子在载体,三维动画轨道

23、(二维)。(2)彗星(,你)(四)显示的粒子轨迹的矢量和,三维(二维)。(3)彗星(,)(四)作用与二彗星(是),但尾巴的长度定义背后的额外的轨道的长度(是),那里是介于0和1,默剧流行的0.1,即,通过,定能创造一个类似的动画流星花园。我们可以通过以下简单和复杂的代码就能得出一个简单的点,线动画=0:50:10 *丕丕/;comet3(罪(吨),因为(吨),0.4)现在我们用很小的方式,在动画中,这种方法过于简单,往往很难解决的问题。2.3.2以旋转颜色映像的方式呈现动画在文中第一部分已经介绍过:这种方式的动画容易出问题,故平时不建议使用这样的方式。但是在这里我们还是要了解一下这样的方法。这

24、种方式制作动画主要有一个函数spinmap,它的使用方法如下:(1)spinmap(x)旋转颜色映像3秒,以颜色变化来产生动画。(2)spinmap(x,T)旋转颜色映像T秒。(3)spinmap(x,inf)无限旋转颜色映像直到按下CTRL+C组合键。(4)spinmap(x,T,inc)使用定义的间隔秒数与总秒数来旋转颜色映像。由于现在很少有计算机的像素是256色的了,故这种方式就无法给出实例研究。也可以说这是个过时的方法。2.3.3以电影的形式呈现动画电影是由于人眼的各种屏幕翻转,形成了动态的效果。因此,首先要节省的薪酬可能是一个不同的画面,然后把他们在一系列的电影,像电影动画的形式,存

25、储和维护,因为他们是为了发挥出在这个动画效果的方法。这种方法主要是在电影动画和动画模拟现实。电影动画是好的,运行时间可以播出几次,甚至可以直接生成AVI文件,直接和Matlab环境下发挥。这是其他三部动画方法没有适当的功能。在MATLAB中,创建一个影片的动画制作过程划分为以下四个步骤.第一步:调用原来初始化的内存(以上Matlab5.3can的步骤可以省略)的MOVI功能,创造a是一个足够大的矩阵,可容纳啊,根据当前轴的一系列指定的图形大小(这里称为帧)。第二步:调用帧函数生成每一帧。该函数返回一个列向量,充分利用这个载体,我们可以创建一个电影动画矩阵。gframe功能可以捕捉动物和动画帧,

26、并把它保存到我们用什么样的矩阵金额。一般在一系列动画帧为周期函数。函数的格式:(1)D = gefframe(X),从目前的图形,动画帧帧(2)G = gefframe(X,H)从图形手柄获得在H动画帧(3M的getFrame(X,H,矩形),从图形句柄h指定区域拍摄动画帧第三步:调用的MOVI功能具有良好的速度快,运行动画电影数量按照指定。当创建了一系列的动画帧,您可以使用电影功能播放动画帧车库。主要格式的功能:(1)电影(M,H)的矩阵M帧的动画播放时间(2)电影(,M,N,H)的矩阵是M n播放动画帧(3)电影(M,N FPS,H),矩阵M的FPS速度帧N播放帧每秒的动画第四步:movi

27、e2avi功能被称为一系列动画帧中最奇怪的矩阵矩阵转换视频文件为AVI文件。这个惊人的计算机图形,MATLAB环境之外,甚至可以播放动画。电影方式的结构基本如下:%录制电影动画 for j=1:n % %这里输入我们的绘图命令 % M(j) = getframe; end movie(M)%单帧显示方法 f = getframe(gcf); colormap(f.colormap); image(f.cdata);2.3.4以对象的方式呈现动画(程序动画)这种方式是通过MATLAB句柄式模式图形搭配draw来实现的,是使用最多的一种MATLAB制作动画的方法。原理模型是以对象的更新来产生新图,

28、进而覆盖旧图,是图形对象不断发生变化,原生创作以实现动画效果,因此曲线、坐标轴等图形对象都可以借助xdata、ydata、zdata等属性的变化偏差,搭配draw函数,来控制图形对象产生动画效果,不过对于比较复杂的动画实际上就是在实行上可能比较难以达到。使用这种方式必须先了解擦除模式(EraMode)的相关属性。以曲线为例,每一曲线都有下列3种属性。l xda向量;表示曲线的X坐标值。l yta向量;表示曲线的Y坐标值。l EraMode;输入参数,用以决定擦除的处理方法。EraseMode有以下几种处理方法。 A)正常:重画整个图像,这幅画看上去会很好看。这个值是默认值,可以保证图形显示是最

29、精确的,但也是最EraseMode显示速度缓慢。B)xor:在绘图的过程,用Matlab将任何当前已经绘制窗口对象被删除,并与旧曲线xor减少,也是唯一的油漆到屏幕颜色不一致的新对象分,只有消除与屏幕颜色不相同的原始对象,使用xor运算计算线条颜色和当前位置的颜色,并将结果显示和消除线(xor高管薪酬综合相互排斥,屏幕颜色呈现消除线),通常建议使用这种方法产生动画。C)背景:将旧的曲线为背景的颜色变化,也就是在绘图,Matlab将当前任何已经存在的窗口对象的绘制当前窗口的背景颜色,也许用户不能区分的使用与背景xor的场合,简单地说,背景将被应用到所有的旧曲线访问对象被视作为背景颜色,这些对象可

30、能是坐标转换、网格线或其他图形对象,等等,所以背景缓慢的速度,在同样的需求,通常用于使用xor运算。此外,如果当前的坐标颜色设置为none,然后用图形背景色坐标变换而不是颜色。D)没有:留着旧曲线并不处理,也就是在绘图,Matlab对任何已经建立了一个文件在对象不是绘图窗口做任何事情。此外,Matlab不会打印图形,因为没有存储系统的一个图形的任何信息之前。反对呈现动画的程序如下。(1)创建一个图形对象,如曲线。(2)设置对象的属性EraseMode以确定对象的更新方式,一般用于设置XOR。(3)建立一个周期,并与对象XDATA或ydata或两者的变化来产生动画drawnow搭配。经典格式的方

31、法是:%程序动画%选择擦除模式set(h,erasemode,erasemode)%h是需要执行动画图像的句柄,一般都是由line或者plot创建%需要执行一些图形计算命令%循环语句中更新坐标数据,一般使用for或者whilefor i=1:n%必要的MATLAB命令set(h,xdata,xdata,ydata,ydata)%更新图像的坐标数据drawnow%刷新屏幕end2.4通过MATLAB录制AVI文件动画制作在MATLAB中必须在特定环境中运行,所以将会有很大的局限性。想要通过在不同的计算机上,您必须安装MATLAB环境下,后使共享的MATLAB的动画是可怜的。为了解决这个问题,MA

32、TLAB提供动画avi格式的视频文件,并提高共享的MATLAB的动画。生成一个MATLAB动画录音,然后使用avifile唱片,使用以下。AVIOBJ = avifile( filename”、“财产”,“属性”、“财产”,“属性值为2,)如果属性值不需要添加值或一个数组的单一的引导。FRS:玩每秒帧数,默认值为15。质量:设置AVI文件回放质量,当然,高质量的大文件,默认值是75。COLORMAP:m * 3个颜色矩阵来设置颜色值的AVI文件。一般的使用功能的avifile动画记录时间分为以下步骤。(1)使用avifile函数行创建一个空的AVI文件。(2)构造的照片需要动画文件。(3)使用

33、getframe函数来获得当前窗口或轴画面。(4)使用addframe函数将这些图片输入一个AVI文件。 3 实例分析3.1符号解释pi:程序中表示数学中的sin(x):表示正弦函数,x为自变量cos(x):表示余弦函数,x为自变量.*:点乘,表示矩阵的相乘sqrt(x):数学运算对x开平方exp(x):表示数学运算gca:返回当前坐标对象的句柄nextplot:表示如何添加图形,值有“add”使用当前图形窗口显示图形,默认,“replace”复位图形窗口对象,删除子对象,“replacechildren”删除子对象。3.2主要程序的制作程序一:直接用函数制作二维质点运动轨迹。首先预定好所要想

34、绘制的函数,例如想要绘制圆形,则圆的方程为其中t的值是定义域,0到2pi表示一个圆,而0到5pi表示两个半的圆,而且由于t的逐渐增大,此时我们画出的圆就是还没有画完一个圆时半径就不断增大的,所以呈现给我们的就是一个线旋。那么我们要先定义t的取值范t=0:0.1:5*pi;,这个就表示我们要画的是一个两圈半的旋。然后是编写好x和y的函数x=t.*sin(t);和 y=t.*cos(t);。最后利用comet函数comet(x,y)使得图形逐渐画出。可以得到以下的效果图。我们可以看到,图中的坐标轴默认设置为图形的x和y的取值范围,动画是从中间的小圆开始逐渐扩大运动出来的。这个动画的效果就像是我们在

35、纸上用笔画出来的一般。首先预定好所要想绘制的函数,例如想要绘制圆形,则圆的方程为其中t的值是定义域,0到2pi表示一个圆,而0到5pi表示两个半的圆,而且由于t的逐渐增大,此时我们画出的圆就是还没有画完一个圆时半径就不断增大的,所以呈现给我们的就是一个线旋。那么我们要先定义t的取值范t=0:0.1:5*pi;,这个就表示我们要画的是一个两圈半的旋。然后是编写好x和y的函数x=t.*sin(t);和 y=t.*cos(t);。最后利用comet函数comet(x,y)使得图形逐渐画出。可以得到以下的效果图。我们可以看到,图中的坐标轴默认设置为图形的x和y的取值范围,动画是从中间的小圆开始逐渐扩大

36、运动出来的。这个动画的效果就像是我们在纸上用笔画出来的一般。当然,如果把函数表达式换成x=sin(t);y=cos(t);,就会得到一个以(0,0)为圆心的圆。图3-1程序二:直接用函数制作三维质点运动轨迹。其实三维就是二维的扩展,在二维的基础之上再增加一个z变量。和二维的一样同样是要先定义好要使用的变量,TO=2*pi;T=5*TO;dt=pi/100;t=0:dt:T;f=sqrt(122-92);th=12.5*pi/180;E=exp(-t/20);然后使用函数绘出图形x=E.*(12*cos(t)-f);y=E.*(9*cos(th)*sin(t);z=E.*(9*sin(th)*s

37、in(t);plot3(x,y,z)hold on,sphere(10), axis off,最后用comet函数使质点运动起来comet3(x,y,z,0.02),hold off图3-2程序三:直接利用函数以电影的形式制作动画电影动画最主要的就是要把每一帧图片都储存在一个矩阵中,再把它回放出来。而当图片画的越多,每一张图片变化越小时,动画越显得顺畅,若是相邻的图片之间的变化太大就容易产生跳动的感觉。首先可以先画出图像,同时设定坐标覆盖模式x=sphere(20); set(gca,nextplot,replacechildren);,然后按照格式编辑程序:for i=1:30 surf(c

38、os(pi*i/10)*x,x); M(i)=getframe;endmovie(M)i代表的就是一共有几帧,即几张图,而surf()则开始绘制图片,getframe就是抓住每一帧图片,将其放入M(i)矩阵中。电影动画就是占用很大的内存,使得程序运行的时候有点慢。因此电影动画是不适合做很多变化的MATLAB动画的。图3-3程序四:利用矩阵以电影的形式制作动画这时就需要我们拥有至少两个矩阵x,y,如:x=0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1; y=-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; 利用这两个

39、矩阵我们可以用plot绘制最简单的图形一条曲线,那么就能利用动画使曲线的走向发生变化。图3-4程序五: 读取文件来制作电影式动画文件操作时一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。MATLAB可读写的文件类型有两种:一是二进制文件,二是文本文件。在读取文件之前,必须先用fopen函数打开文件,其调用格式如下:fid=fopen(文件名,打开方式)fscanf函数可以读取文本呢文件的内容,并按指定格式存入矩阵。其调用格式是:A,COUNT=fscanf(fid,format,size)其中A用以存放读取的数据,C

40、OUNT返回所读取的数据元素个数。fid为文件句柄。format用以控制读取的数据格式,size为可选项,决定矩阵A中数据的排列形式。首先打开和读取数据,s=data.txt;fidin=fopen(s);x=fscanf(fidin,%f,10,10);y=fscanf(fidin,%f,10,10); z=fscanf(fidin,%f,50,1);,然后再根据电影动画的格式写出循环,就能得到以下的动画图3-5程序六:制作程序动画程序动画模拟的是我们用铅笔在图纸上画画,然后又用橡皮檫掉了再重新画的过程。那么这个时候我们只需要“一张纸”就好了,不需要像电影动画一样要“很多张纸”。程序动画依然

41、是要一张一张的图形一次画出,才能显示动画。图3-6程序七:将动画制作成avi文件首先用aviobj=avifile(pic04.avi,fps,3);创建一个新的avi文件,然后进行绘图,用for循环执行动画,再用aviobj=addframe(aviobj,M(i);把各个图片按照顺序加载到avi文件中。那么我们在以上所有的动画经过这样的处理后,就能把MATLAB中的动画共享到各个计算机中。程序八:电影动画与程序动画的比较既然两种方式都能画出出色的动画效果,那么这两种方式共同画出同一个动画会如何。我们可以将程序六改为电影动画,只需要添加电影动画的句柄M(i)=getframe; 和movie

42、(M)即可。电影动画的效果如下:图3-7可以看出,程序动画比电影动画更加流畅自然。电影动画和程序动画在画同一个动画效果时,当帧数较少时,电影动画容易出现“卡壳”的现象,而程序动画则表现很流畅。然而程序动画的代码没有电影动画那么简洁易懂,在制作时会有一些难度。所以,当所要制作的动画帧数较大时,我们可以优先选择电影动画方式。但是若在动画的性能上有较高的要求,则可以选择程序动画。程序九:复杂的动画二维周期漩涡问题。在5050一致空间网格上用5阶FD-WENO格式求解,算至时刻t = 10,计算结果利用Matlab动态演示,部分时刻的截图如下,从图中可以直观地看出漩涡随时间的演化过程。动画结果如下:图3-8

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号