MATLAB中的动画设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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、擦除动画
• 使用Matlab的绘图函数不断重复绘制图形对象,重绘过程中递增式地改 变图形对象位置将产生动画效果。 • 使用drawnow命令;设置擦除模式(EraseMode)。 • 最常用的动画设计方式。
Matlab的图形绘制函数允许采用不同的擦除模式来擦除原来的对象,不同的擦除模式 将产生不同的动画效果。擦除模式是通过没置“EraseMode”属性来完成的,一共有 三种擦除模式: (1)none:重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生 成过程,如曲线和旋转曲线的生成过程。 (2)background:在重新绘制图形对象之前。用背景色重绘对象来达到擦除原来图 形对象的目的。该模式会擦除任何对象和它下面的任何图形。 (3)Xor:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。 这种模式能产生图形对象移动的效果。
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中的动画设计——电影动画
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
设计步骤
• step1:调用getframe函数生成每个帧。该函数返回一个列矢量, 利用这个矢量,就可以创建一个电影动画矩阵。 • step2:调用movie函数按照指定的速度和次数运行该电影动画。 • step3:调用movie2avi函数可以将矩阵中的一系列动画帧转换 成avi视频文件。这样,即使脱离了matlab环境也可播放动画。
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中的动画设计
同济大学
MATLAB中的动画设计
1 2
3
质点动画 电影动画 擦除动画
MATLAB中的动画设计——质点动画
1、质点动画
• 产生一个顺着曲线轨迹运动的质点来操作 • 使用comet、comet3函数 • 最简单的动画产生方式
MATLAB中的动画设计——质点动画
设计步骤
• step1:求解出质点完整的运动轨迹坐标x,y和z • step2:使用comet或者comet3直接绘制动点
MATLAB中的动画设计——擦除动画
【 例 7 9 】 运 动 的 小 球 【 例 8 】 单 摆 横 梁
【 例 】 时 钟 演 示
【 例 10 】 小 球 绕 跑 道 运 动
Thanks!
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中的动画设计——质点动画
【例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中的动画设计——电影动画
【例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)%播放画面