zhouyang664 发表于 2010-8-25 09:06

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

paradiseboy 发表于 2010-8-29 13:51

很实用的帖子
以前做动画时,总是一闪一闪的,感觉很不爽。
学习了!
页: [1]
查看完整版本: MATLAB动画设计总结!