Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-01-02
帖子: 247
声望力: 22 ![]() |
![]()
% 本程序动画演示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 |
![]() |
![]() |