MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [分享][原创]动画震荡的小球(含MATLAB源码和注释) (https://www.labfans.com/bbs/showthread.php?t=4217)

pslpsl 2008-08-25 20:43

[分享][原创]动画震荡的小球(含MATLAB源码和注释)
 
2 个附件
[code]
function bai
%震荡的小球动画演示
%EDIT BY PSL@CSU
%QQ:547423688
%Email:[EMAIL="[email protected]"][email protected][/EMAIL]
clear
clc
savemov=1;%是否生成avi文件,1为是,0为否
if(savemov==1)
mov=avifile('bai.avi');
end
t=0:pi/18:4*pi;
n=length(t);
y=cos(t); %震荡轨迹,可改变函数
line1=plot(t,y,'b'); %绘制曲线
axis([0 4*pi -1.5 1.5]);
hold on;
title('震荡的小球动画演示(By pslpsl)');
%下面利用线绘制小球,并定义线的颜色,线形大小和擦除方式
%小球对象的句柄存放在变量h中,后面利用这个句柄对小球控制
h=line('color',[0 0.5 0.5],'linestyle','.','markersize',50,'erasemode','xor');
%最关键的一点把擦除方式设为'xor',这样才能实现好的动画效果
%下面为脚本文件
i=1;
k=1;%控制转向
count=1;
j=2;%震荡次数 j/2次
line2=plot(t(1),y(1),'r');%存放震荡线
while count<j*n-j+1
delete(line2);%或cla %删除震荡线
temp=rand(1)-0.5;%随机震荡
set(h,'xdata',t(i),'ydata',y(i)+temp);
line2=plot([t(i),t(i)],[y(i),y(i)+temp],'r');
pause(0.01);
%drawnow;%刷新
if(savemov==1)
f=getframe(gcf);
mov=addframe(mov,f);
end
i=i+k;
count=count+1;
%碰到反射点转向
if(i==1|i==n)
k=-k;
end
end
hold off;
if(savemov==1)
mov=close(mov);
end
%EDIT BY [EMAIL="PSL@CSU"]PSL@CSU[/EMAIL]
%QQ:547423688
%Email:[EMAIL="[email protected]"][email protected][/EMAIL]


[/code]

动画效果如下:

[ATTACH]1035[/ATTACH]

labfans 2008-08-25 20:50

回复: [分享][原创]动画震荡的小球(含MATLAB源码和注释)
 
呵呵,[URL="http://www.labfans.com/member.php?u=19313"]pslpsl[/URL]发帖,必属精品!

wwlaoxi 2010-07-13 17:11

回复: [分享][原创]动画震荡的小球(含MATLAB源码和注释)
 
谢谢啦 啊:)正学这块的了


所有时间均为北京时间。现在的时间是 11:14

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.