资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
MATLAB中的动画设计,同济大学,MATLAB中的动画设计,电影动画,擦除动画,3,质点动画,1,2,MATLAB中的动画设计质点动画,1、质点动画 产生一个顺着曲线轨迹运动的质点来操作 使用comet、comet3函数 最简单的动画产生方式,MATLAB中的动画设计质点动画,step1:求解出质点完整的运动轨迹坐标x,y和z step2:使用comet或者comet3直接绘制动点,设计步骤,MATLAB中的动画设计质点动画,【例1】质点绕圆轨迹运动 %使用函数comet建立质点绕圆运动的动画 clear t=linspace(0,2*pi,10000); x=cos(t); y=sin(t); plot(x,y);%以便比较comet是否跟着轨迹走 axis square; hold on; comet(x,y,0.03),MATLAB中的动画设计质点动画,【例2】质点绕螺旋轨迹运动 %使用函数comet3建立质点绕圆运动的动画 clear t=0:pi/500:10*pi; plot3(sin(t),cos(t),t) axis square; %hold on; comet3(sin(t),cos(t),t,0.5),MATLAB中的动画设计质点动画,【例3】平抛运动 %平抛运动 clear vx = 40; t = 0:0.01:10; x = vx*t; y = -9.8*t.2/2; comet(x,y),MATLAB中的动画设计质点动画,【例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),MATLAB中的动画设计电影动画,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次,MATLAB中的动画设计电影动画,step1:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。 step2:调用movie函数按照指定的速度和次数运行该电影动画。 step3:调用movie2avi函数可以将矩阵中的一系列动画帧转换成avi视频文件。这样,即使脱离了matlab环境也可播放动画。,程序结构,设计步骤,MATLAB中的动画设计电影动画,【例5】绕Z轴旋转的peak动画 %绕Z轴旋转的Peak动画 X,Y,Z=peaks(30); surf(X,Y,Z); set(gca,visible,off); colormap(hot) shading interp %记录电影 for i=1:15 view(-45+15*(i-1),30) %视角的改变 m(:,i)=getframe;%抓取画面值 end movie(m)%播放画面,MATLAB中的动画设计擦除动画,3、擦除动画 使用Matlab的绘图函数不断重复绘制图形对象,重绘过程中递增式地改变图形对象位置将产生动画效果。 使用drawnow命令;设置擦除模式(EraseMode)。 最常用的动画设计方式。,Matlab的图形绘制函数允许采用不同的擦除模式来擦除原来的对象,不同的擦除模式将产生不同的动画效果。擦除模式是通过没置“EraseMode”属性来完成的,一共有三种擦除模式: (1)none:重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程,如曲线和旋转曲线的生成过程。 (2)background:在重新绘制图形对象之前。用背景色重绘对象来达到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何图形。 (3)Xor:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。这种模式能产生图形对象移动的效果。,MATLAB中的动画设计擦除动画,step1:设置重绘对象的擦除模式EraseMode模式 step2:在循环语句中使用set更改图形的xdata,ydata和zdata等坐标数据。 step3:使用darwnow命令刷新屏幕,程序结构,设计步骤,set(h,erasemode,erasemode)%h是需要执行动画图像的句柄,一般都是由line或者plot创建 for i=1:n set(h,xdata,xdata,ydta,ydata)%更新图像的坐标数据 drownnow%刷新屏幕 end,MATLAB中的动画设计擦除动画,【例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) for i=1:200 y=sin(2*t+i/10).*exp(-t/5); set(h,ydata,y);%不断更新y值 drawnow; end,MATLAB中的动画设计擦除动画,【例7】运动的小球,【例9】时钟演示,【例8】单摆横梁,【例10】小球绕跑道运动,Thanks!,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号