前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【MATLAB 从零到进阶】 动画制作

【MATLAB 从零到进阶】 动画制作

作者头像
统计学家
发布于 2019-04-10 07:47:59
发布于 2019-04-10 07:47:59
1.5K0
举报

第五节 动画制作

一、质点运动轨迹动画

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格式动画,必须先将真彩图像转为索引图像或灰度图像,然后才能写入。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档