版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB中的动画设计
同济大学2021/5/91MATLAB中的动画设计电影动画擦除动画3质点动画122021/5/92MATLAB中的动画设计——质点动画1、质点动画产生一个顺着曲线轨迹运动的质点来操作使用comet、comet3函数最简单的动画产生方式2021/5/93MATLAB中的动画设计——质点动画step1:求解出质点完整的运动轨迹坐标x,y和zstep2:使用comet或者comet3直接绘制动点设计步骤2021/5/94MATLAB中的动画设计——质点动画【例1】质点绕圆轨迹运动%使用函数comet建立质点绕圆运动的动画cleart=linspace(0,2*pi,10000);x=cos(t);y=sin(t);plot(x,y);%以便比较comet是否跟着轨迹走axissquare;holdon;comet(x,y,0.03)2021/5/95MATLAB中的动画设计——质点动画【例2】质点绕螺旋轨迹运动%使用函数comet3建立质点绕圆运动的动画cleart=0:pi/500:10*pi;plot3(sin(t),cos(t),t)axissquare;%holdon;comet3(sin(t),cos(t),t,0.5)2021/5/96MATLAB中的动画设计——质点动画【例3】平抛运动%平抛运动clearvx=40;t=0:0.01:10;x=vx*t;y=-9.8*t.^2/2;comet(x,y)2021/5/97MATLAB中的动画设计——质点动画【例4】导弹发射%导弹发射vx=100*cos(1/4*pi);vy=100*sin(1/4*pi);t=0:0.001:15;x=vx*t;y=vy*t-9.8*t.^2/2;comet(x,y)2021/5/98MATLAB中的动画设计——电影动画2、电影动画从不同的视角拍下一系列对象的图形,并保存到变量中,然后按照一定的顺序像电影一样播放。使用getframe、movie函数。getframe函数可以捕捉动画帧,并保存到矩阵中。该函数的主要格式有:(1)F=gefframe,从当前图形框中得到动画帧(2)F=gefframe(h),从图形句柄h中得到动画帧(3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧当创建了一系列动画帧后,可利用movie函数播放这些动画帧。该函数的主要格式有:(1)movie(M),将矩阵M中的动画帧播放一次(2)movie(M,n),将矩阵M中的动画帧播放n次(3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次2021/5/99MATLAB中的动画设计——电影动画step1:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。step2:调用movie函数按照指定的速度和次数运行该电影动画。step3:调用movie2avi函数可以将矩阵中的一系列动画帧转换成avi视频文件。这样,即使脱离了matlab环境也可播放动画。程序结构设计步骤2021/5/910MATLAB中的动画设计——电影动画【例5】绕Z轴旋转的peak动画%绕Z轴旋转的Peak动画[X,Y,Z]=peaks(30);surf(X,Y,Z);set(gca,'visible','off');colormap(hot)shadinginterp%记录电影fori=1:15view(-45+15*(i-1),30)%视角的改变m(:,i)=getframe;%抓取画面值endmovie(m)%播放画面2021/5/911MATLAB中的动画设计——擦除动画3、擦除动画使用Matlab的绘图函数不断重复绘制图形对象,重绘过程中递增式地改变图形对象位置将产生动画效果。使用drawnow命令;设置擦除模式(EraseMode)。最常用的动画设计方式。Matlab的图形绘制函数允许采用不同的擦除模式来擦除原来的对象,不同的擦除模式将产生不同的动画效果。擦除模式是通过没置“EraseMode”属性来完成的,一共有三种擦除模式:(1)none:重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程,如曲线和旋转曲线的生成过程。(2)background:在重新绘制图形对象之前。用背景色重绘对象来达到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何图形。(3)Xor:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。这种模式能产生图形对象移动的效果。2021/5/912MATLAB中的动画设计——擦除动画step1:设置重绘对象的擦除模式'EraseMode'模式step2:在循环语句中使用set更改图形的xdata,ydata和zdata等坐标数据。step3:使用darwnow命令刷新屏幕程序结构设计步骤set(h,'erasemode',erasemode)%h是需要执行动画图像的句柄,一般都是由line或者plot创建fori=1:nset(h,'xdata',xdata,'ydta',ydata)%更新图像的坐标数据drownnow%刷新屏幕end2021/5/913MATLAB中的动画设计——擦除动画【例6】随时间衰减的正弦函数%随时间衰减的正弦函数t=0:0.005:10*pi;%产生曲线并用xor方式抹去旧曲线h=plot(t,sin(2*t).*exp(-t/5),'EraseMode','xor');set(gcf,'Position',[450,350,350,250])fori=1:200y=sin(2*t+i/10).*exp(-t/5);set(h,'yda
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论