MATLAB动画设计总结!
% MATLAB动画设计%一、擦除方式动画设计
%擦除方式呈现动画是通过MATLAB句柄式图形搭配drawnow来实现的,原理是
%以对象的更新来产生新图,进而覆盖旧图,使图形对象不断发生变化,以实现
%动画的效果,因此曲线、坐标轴等图形对象都可以借助xdata,ydata,zdata等
% 属性的变化,搭配drawnow函数来控制图形对象产生动画的效果,不过对于复杂
% 的动画在实行上可能比较难以达到。
%EraseMode的4种处理方式:
%1.normal:重画整个画面,默认值,最精确,但最慢
%2.xor:一般产生动画建议使用此种方式
%3.background:速度较慢
%4.none:保留旧曲线不处理
%MATLAB中以擦除方式呈现动画的基本步骤:
%1.产生一个图形对象;
%2.设置该对象的属性EraseMode来决定对象的更新方式,一般设置为xor;
%3.建立循环并借助对象的xdata和ydata并搭配drawnow来产生动画;
t=0:0.05*pi:10*pi;
h=plot(t,sin(t).*exp(-t/5),'erasemode','xor');%nomal/background/none
set(gcf,'position',,'menubar','none');
for i=1:200
y=sin(2*t+i*0.1).*exp(-t/5);% y=sin(2*t+i*0.1).*exp(-(t+i*0.05)/5);
set(h,'ydata',y);pause(0.05);
drawnow;
end
%功能:利用擦除模式动画显示布朗运动效果
n=20
s=0.02
x=rand(n,1)-0.5;
y=rand(n,1)-0.5; %设置x、y的取值
h=plot(x,y, '. '); %绘制x、y图形
axis([-1 1 -1 1]) %调整坐标轴范围参数
axis square %坐标轴范围为正方形
grid off %取消网格
set(h, 'EraseMode', 'xor','MarkerSize',18) %设置动画显示属性
while 1
drawnow %显示
x=x+s*randn(n,1);
y=y+s*randn(n,1); %设置x、y的变化轨迹
set(h, 'XData',x,'YData',y) %设置动画属性
end
%功能:利用擦除方式显示圆球沿已定轨道运动的画面
speed=1000;
x=linspace(0,2*pi,speed); %设置x范围及性质
y=tan(sin(x))-sin(tan(x)); %设置x、y的关系
plot(x,y); %绘制曲线
n=length(x); %以x设置变量,形成动态效果
line_handle=line('LineStyle','o','MarkerSize',25,...
'EraseMode','xor', 'MarkerEdgeColor',...
'b','MarkerFaceColor','r'); %设置线条属性
i=1;
while 1
set(line_handle, 'xdata',x(i),'ydata',y(i));
drawnow
i=i+1; %设置循环条件
if i>n
i=1;
end
end
很实用的帖子
以前做动画时,总是一闪一闪的,感觉很不爽。
学习了!
页:
[1]