MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   【资料】猫追耗子的动画演示 (https://www.labfans.com/bbs/showthread.php?t=669)

xiezhh 2007-08-07 20:11

【资料】猫追耗子的动画演示
 
猫与耗子相距15(单位不详),耗子以速度20沿墙根往前跑(该墙垂直于猫和耗子的连线),猫以速度40追赶耗子(猫跑的方向一直正对着耗子)。以下是猫追耗子的动画演示程序。
function cat_mouse
clear
clc
mov=avifile('cat_mouse.avi');

ts=0:0.005:0.5;
x0=[0,0];
[t,x]=ode45(@cat_m,ts,x0);

n=length(x);
figure(1)
plot(0,0,'.')
hold on
h1=line( 'Color' ,[0 0 1], 'Marker' , '.' , 'MarkerSize' ,40, 'EraseMode' , 'xor' );
h2=line(15,0,'MarkerFaceColor',[0 1 0],'Marker','h', 'MarkerSize' ,15, 'EraseMode' , 'xor');
plot(15,0,'.')
line([15 15],[0 11],'LineWidth',2)
axis equal
axis([0 16 0 11])
title('猫追耗子动画演示')

for i=1:n-1
plot(x([i i+1],1),x([i i+1],2))
set(h1, 'xdata' ,x(i+1,1), 'ydata' ,x(i+1,2));
set(h2, 'xdata' ,15, 'ydata' ,20*t(i+1));
drawnow; % 刷新屏幕
pause(0.005)
f=getframe(gcf);
mov=addframe(mov,f);
end
hold off
mov=close(mov);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 微分方程组 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dx=cat_m(t,x)
a=20;b=40;c=15;
s=sqrt((c-x(1))^2+(a*t-x(2))^2);
dx=[b*(c-x(1))/s;b*(a*t-x(2))/s];

oceansky2046 2007-08-09 11:18

强,很有创意!

qhcao 2007-08-10 05:02

Great!

ruyan 2007-08-22 16:06

太有才了,谢谢分享:)

lsg_005 2007-09-01 00:29

有意思!!

baggio198310 2007-11-29 15:35

很有意思,不错

zuoxiangshan 2007-12-21 19:48

很好,是很不错的

夹生饭 2007-12-26 15:54

挺有意思阿!:D

hanyuxing818 2008-01-22 13:22

挺有意思
。。

siodolphin 2008-01-23 12:58

好玩
 
有意义,值得表扬


所有时间均为北京时间。现在的时间是 22:27

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