登录论坛

查看完整版本 : 【资料】猫追耗子的动画演示


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
有意义,值得表扬

zxc_c
2008-01-23, 19:59
很不错! 学习了.

adamas
2008-01-24, 15:34
强 很有意思啊