声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4026|回复: 1

[编程技巧] MATLAB动画设计总结!

[复制链接]
发表于 2010-8-25 09:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
% 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',[450,350,350,250],'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

回复
分享到:

使用道具 举报

发表于 2010-8-29 13:51 | 显示全部楼层
很实用的帖子
以前做动画时,总是一闪一闪的,感觉很不爽。
学习了!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-11 11:56 , Processed in 0.056170 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表