Matlab动画制作
Matlab的动画制作:
质点动画:最简单的动画产生方式,产生一个顺着曲线轨迹运动的质点来操作。
电影动画:首先保存一系列的图形,然后按照一定的顺序像电影一样的播放。
程序动画:在图形窗口中按照一定的算法连续擦除和重绘图形对象。
质点动画
使用comet、comet3函数来产生质点动画,其步骤如下:
step1:求解出质点完整的运动轨迹坐标x,y和z。
step2:使用comet或者comet3直接绘制动点。
函数comet和comet3调用格式
调用格式 |
说明 |
comet(y) |
显示质点绕着向量y的动画轨迹(二维) |
comet(x, y) |
显示质点绕着向量y与x的动画轨迹(二维) |
comet(x, y, p) |
同上面的效果,但额外地定义轨迹尾巴线的长度p*length(y), 其中p是介于0和1之间的数,默认为0.1 |
实例:
% 最简单的动画形式,使用comet、comet3函数
% 产生一个顺着曲线轨迹运动的质点
% step1:求解出质点完整的运动轨迹坐标x,y和z
% step2:使用comet或者comet3直接绘制动点
% 使用函数comet建立质点绕圆运动的动画
clf;
clear;
%{
linspace是Matlab中的一个指令,用于产生指定范围内的指定数量点数,相邻数据跨度相同,并返回一个行向量。
调用方法:linspace(x1,x2,N)
功 能:用于产生x1,x2之间的N点行矢量,相邻数据跨度相同。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。
举例如下:X = linspace(5, 100, 20) % 产生从5到100范围内的20个数据,相邻数据跨度相同
X = 5 10 15 20 25 30 35 40 45 5055 60 65 70 75 80 85 90 95 100 ps:这和X = [5 : 5 : 100]的效果是一样的。
%}
% 圆周运动
t = linspace(0, 2*pi, 10000);
x = cos(t);
y = sin(t);
% 以便比较comet是否跟着轨迹走
% plot(x, y);
axis([-1, 1 -1, 1]); axis square;
hold on; grid on;
% comet(x, y, p); p:定义轨迹尾巴的长度,范围在0-1之间,默认时为0.1
comet(x, y, 0.03);
% 平抛运动
clf;
clear;
grid on;
vx = 40;
dt = linspace(0,10,1000);
dx = vx*dt;
dy = -9.8*dt.^2/2;
comet(dx, dy);
% 导弹发射
clf;
clear;
grid on;
vx = 100*cos(1/4*pi);
vy = 100*sin(1/4*pi);
t = 0:0.01:15;
dx = vx*t;
dy = vy*t-9.8*t.^2/2;
comet(dx, dy);
% 使用函数comet3建立质点绕圆运动的动画
figure();
grid on;
tt = 0:pi/500:10*pi;
plot3(sin(t),cos(t),t);
comet3(sin(tt), cos(tt), tt, 0.5);
电影动画
1、调用moviein函数对内存进行初始化,创建一个足够大的矩阵,使之能够容纳基于当前坐标大小的一系列指定的图形(此处称为帧)。
2、调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。
3、调用movie函数按照指定的速度进行指定次数播放该电影动画。例如:movie(M, n)