回复: 求解一道简单的追及问题
% 本程序动画演示n人沿正n边形同向追逐问题
% 问题描述:n人沿正n边形同向等速率追逐,在追逐的过程中,相邻
% 两人行驶方向的夹角始终保持 2*pi/n.
% 当 n = 4 时,就是楼主想要的动画演示追逐过程.
% 状态的初始化
clear, clc
n = input('参与追逐的人数 n = ');
alpha = linspace(0,2*pi,n+1);
r=10;
x=r*cos(alpha);
y=r*sin(alpha);
axis equal
axis([-r-5 r+5 -r-5 r+5]);
line([-r-5 r+5],[0 0])
line([0 0],[-r-5 r+5])
axis off
hold on
plot(x,y,'marker','h','markersize',9,'linewidth',2)
% 下面首先计算轨迹坐标,然后演示追逐过程.
v=1; % n人的追逐速度.
dt=0.5; % 时间间隔.
d=2*r*sin(2*pi/n); % 相邻两人的距离--正n边形的边长.
while(d>0.5)
d=sqrt((x(1)-y(1))^2+(x(2)-y(2))^2);
for i=1:n
x(i)=x(i)+v*dt*(x(i+1)-x(i))/d;
y(i)=y(i)+v*dt*(y(i+1)-y(i))/d;
end
x(n+1)=x(1); y(n+1)=y(1);
plot(x,y,'h','markersize',9)
pause(dt)
end
hold off
|