第五节 动画制作
一、质点运动轨迹动画
1. comet函数
调用格式:
comet(y)显示质点绕着向量y的二维动画轨迹
comet(x,y)显示质点绕着向量y与x的二维动画轨迹
comet(x,y,p)用输入参数 p 定义轨迹尾巴线的长度
comet(axes_handle,...)在句柄值为axes_handle的坐标系中显示动画
例:
质点绕阿基米德螺线(极坐标方程为ρ =θ)运动的二维彗星运行轨迹动画。
t=linspace(0,10*pi,2000); x=t.*cos(t); y=t.*sin(t); comet(x,y);
2. comet3函数
调用格式:
comet3(z)显示质点绕着向量z的三维动画轨迹
comet3(x,y,z)显示质点绕着向量x 、y与z的三维动画轨迹
comet(x,y,z,p)用输入参数 p 定义轨迹尾巴线的长度
comet(axes_handle,...)在句柄值为axes_handle的坐标系中显示动画
x=20sint
质点绕螺旋线 y=20cost 运动的三维彗星运行轨迹动画。
z= t
>> t = linspace(0, 10*pi, 1000); >> x = 20*sin(t); >> y = 20*cos(t); >> z = t; >> comet3(x,y,z)
二、霓虹闪烁动画
1. spinmap函数
调用格式:
spinmap,旋转颜色映像约5秒钟;
spinmap(t),旋转颜色映像约t秒钟,具体时间取决于硬 件;
spinmap(t,inc),旋转颜色映像约t秒钟,并设置增量参数inc,该参数用来调整闪烁频率;
spinmap('inf'),不限时旋转颜色映像,若需终止,请按Ctrl+C键。
例:霓虹闪烁的球体
>> sphere; >> axis equal; >> axis off; >> spinmap(20,1);
三、电影动画
所谓的电影动画是指先把一帧帧图片保存起来,然后再像放电影一样把它们按次序播放出来。MATLAB中提供了getframe函数和movie函数,用来制作电影动画。其中getframe函数用来抓取图形对象作为电影的帧,movie函数用来播放电影动画。
1. getframe函数
调用格式:
getframe返回一个电影帧,它是当前坐标系或图形窗口的快照
F = getframe抓取当前坐标系作为一帧
F = getframe(h)抓取句柄值为h的图形对象作为一个电影帧
F = getframe(h,rect)抓取句柄值为h的图形对象的指定区域作为一个电影帧,rect是形如[左边距,下边距,宽度,高度]的向量,用来设定抓取区域
2. movie函数
调用格式:
movie(M)在当前坐标系中只播放一次由矩阵M所保存的电影
movie(M,n)播放n次,若n为负数,则倒着循环播放,若n为向量,
第一个元素为播放次数,后续元素为帧序号movie(M,n,fps) 每秒播放fps帧,播放n次,默认每秒12帧
例:一颗跳动的红心
x=linspace(-2,2,100); [X,Y,Z]=meshgrid(x,x,x); V=(X.^2+9/4*Y.^2+Z.^2-1).^3-X.^2.*Z.^3-9/80*Y.^2.*Z.^3; p=patch(isosurface(X,Y,Z,V,0)); set(p,'FaceColor','red','EdgeColor','none'); view(3);axis equal;axis off; light('Posi',[0 -2 3]); lighting phong set(gca,'nextplot','replacechildren'); XX=get(p,'XData');YY=get(p,'YData');ZZ=get(p,'ZData'); for j=1:20 bili=sin(pi*j/20); set(p,'XData',bili*XX,'YData',bili*YY,'ZData',bili*ZZ) F(j)=getframe; end movie(F,10)
三、录制AVI格式视频动画
MATLAB中提供了avifile函数,用来把getframe函数抓取的电影帧录制为AVI格式视频动画。利用MATLAB录制AVI格式视频动画的步骤依次如下:
调用avifile函数先创建一个空白的avifile文件。
绘制视频的每一个帧所对应的图形。
调用getframe函数抓取当前图形窗口或坐标系中的图片。
调用addframe函数把抓取的图片添加到avifile文件中。
调用close函数关闭avifile文件。
四、GIF 动画
在浏览网页的时候,我们会看到好多很炫的动画,它们大多都是GIF格式的图片。其实GIF格式动画是将多幅图像保存为一个图像文件,从而形成动画。MATLAB中制作GIF动画要用到getframe、frame2im、rgb2ind和imwrite函数,getframe函数用来抓取当前图形窗口或坐标系中的图像,frame2im函数和rgb2ind函数用来将抓取的图像转为索引图像,imwrite函数用来将索引图像写入GIF格式动画。
注意:imwrite函数不能将真彩图像(RGB图像)写入GIF格式动画,必须先将真彩图像转为索引图像或灰度图像,然后才能写入。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有