文档库 最新最全的文档下载
当前位置:文档库 › matlab程序_模拟狗追人

matlab程序_模拟狗追人

一个慢跑者在平面上沿着他喜欢的路径跑步,突然一只狗攻击他,这只狗以不变的
速度跑向跑步者,狗的方向始终指向跑步者,计算并画出狗的运动轨迹(如需其他
条件,请自己假定)。程序如下


clc;clf
t=0:.001:pi*2;
plot(exp(i*t));
axis([-1.2,1.2,-1.2,1.2]);
axis square;
hold on;
set(gcf,'DoubleBuffer','on');
xr=1;
yr=0; % initial position of the man
hr=plot(1,0,'k.','markersize',24);
xg=0.1;
yg=0; % initial position of the dog
hg=plot(xg,yg,'rx','markersize',7);
dT=0.1;
dg=0.08; % dg is speed of dog
T=0;
zg=xg+i*yg;
ht=plot(zg,'r');
zz=zg;
while T<8;
T=T+dT;
xr=cos(T);
yr=sin(T);
set(hr,'xdata',xr,'ydata',yr);
D=xr+yr*i-zg;
D=D/abs(D);
zg=zg+D*dg;
zz=[zz,zg];
set(hg,'xdata',real(zg),'ydata',imag(zg));
set(ht,'xdata',real(zz),'ydata',imag(zz));
pause(0.1);
end


下面是人的轨迹是正弦曲线的情形

clc;clf
t=0:.001:pi*6;
plot(t,sin(t));
xlim([0,6*pi])
axis equal;
hold on;
set(gcf,'DoubleBuffer','on');
xr=1;
yr=0; % initial position of the man
hr=plot(1,0,'k.','markersize',24);
xg=0.1;
yg=0; % initial position of the dog
hg=plot(xg,yg,'rx','markersize',7);
dT=0.1;
dg=0.08; % dg is speed of dog
T=0;
zg=xg+i*yg;
ht=plot(zg,'r');
zz=zg;
while T<6*pi;
T=T+dT;
xr=T;
yr=sin(T);
set(hr,'xdata',xr,'ydata',yr);
D=xr+yr*i-zg;
D=D/abs(D);
zg=zg+D*dg;
zz=[zz,zg];
set(hg,'xdata',real(zg),'ydata',imag(zg));
set(ht,'xdata',real(zz),'ydata',imag(zz));
pause(0.1);
end


相关文档