为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

matlab动画制作

2017-09-07 5页 doc 16KB 30阅读

用户头像

is_083599

暂无简介

举报
matlab动画制作动画制作 动画制作通常有两种方法:一种是预先将图形制作好,并放到图形缓冲区内,然后一帧 一帧地播放。另一种方法是保持整个背景图案不变,只更新运动部分的图案,以便加快每幅 图的实时生成速度。 1.简单动画制作 在getframe命令下,可以完成动态数据到动态画面的制作。其使用格式及制作步骤一 般为: for j=1:n plot_command M(j) = getframe; end movie(M,n) 其中M(j)=getframe将当前图形窗口中的画面作为第j帧存入矩阵M,movie(M,n)将按顺序 ...
matlab动画制作
动画制作 动画制作通常有两种方法:一种是预先将图形制作好,并放到图形缓冲区内,然后一帧 一帧地播放。另一种方法是保持整个背景图案不变,只更新运动部分的图案,以便加快每幅 图的实时生成速度。 1.简单动画制作 在getframe命令下,可以完成动态数据到动态画面的制作。其使用及制作步骤一 般为: for j=1:n plot_command M(j) = getframe; end movie(M,n) 其中M(j)=getframe将当前图形窗口中的画面作为第j帧存入矩阵M,movie(M,n)将按顺序 放映矩阵M中存储的画面,并重复n次。 例 x=-3:0.1:3; [x,y]=meshgrid(x); z=sin(x.*y).*exp(x.*y/5); for j=1:30 mesh(cos(4*pi*j/30)*z,z) m(j)=getframe end movie(m,10) 例 模拟6个移动物体 x0=[150 85 150 145 130 0]; y0=[140 85 155 50 150 0]; q=[243/180*pi 236/180*pi 220.5/180*pi 159/180*pi 230/180*pi 52/180*pi]'; t=0:0.05:2*pi; for i=0:280 pause(0.01); for j=1:5 axis([0 160 0 160]); fill(x0(j)+0.8*i*cos(q(j))+4*cos(t),y0(j)+0.8*i*sin(q(j))+4*sin(t),'b') hold on; end fill(x0(6)+0.8*i*cos(q(6))+4*cos(t),y0(6)+0.8*i*sin(q(6))+4*sin(t),'r') hold off; end 2.其它例子 在Matlab里利用图形的“EraseMode”属性可以实现显示新对象,擦除旧对象,而又不 破坏背景图案。图形的“EraseMode”属性有以下四种: normal方式 重绘整个显示区,这种方式产生的图形最准确,但较慢。 none方式 不做任何擦除,直接在原来图形上绘制。 xor方式 对象的绘制和擦除由背景颜色和屏幕颜色的异或而定。只擦除和屏幕颜色不一致的旧 对象的点,只绘制和屏幕颜色不一致的新对象的点。 background方式 把旧对象的颜色变为背景色,这种方式影响被擦除对象下面的对象。 当新对象的属性修改后,应刷新屏幕,使新的对象显示出来。Matlab里屏幕刷新的命令是drawnow。drawnow命令使Matlab暂停目前的任务而去刷新屏幕。若不使用drawnow 命令,Matlab则等到任务序列执行完后才刷新。 例 布朗运动 (1)先确定布朗运动的点数n和一个温度s(或速度)。比如n=20,s=0.002。达到最 好的动画效果的n、s与使用的计算机的性能有关。在以原点为中心、边长为1的正方形内产生n个位置随机分布的点。 (2)在单位正方形里绘制所有的点。设置图形的“EraseMode”属性为异或(xor),即 当图形的某个点的位置变化时,不用全部重绘图形,而只绘制不相同的部分,这将大大提高 绘图速度。 (3)用while循环实现动画效果,在每一次循环中给点的坐标加上一些正态分布的噪 声,这样整个图形中只有点的坐标发生变化,而不用全部重绘整个图形。 程序如下: clc,clear n=20;s=0.002; axis square grid off x=rand(n,1)-0.5;y=rand(n,1)-0.5; h=plot(x,y,'.'); set(h,'EraseMode','xor','MarkerSize',18) while 1 x=x+s*rand(n,1);y=y+s*rand(n,1) set(h,'Xdata',x,'Ydata',y) if all(x>1) & all(y>1) break end drawnow end 例 制作一幅钻石沿着圆周运动的动画。 程序如下: t=0:pi/2000:pi*2; x=sin(t);y=cos(t); axis square plot(x,y,'b') n=length(t); h=line('color','red','marker','diamond','erasemode','xor'); i=1;j=1; while 1 set(h,'xdata',x(i),'ydata',y(i)) drawnow i=i+1;j=j+1; if i>n i=1; end if j>2*n break end end
/
本文档为【matlab动画制作】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索