chenhuips2
2008-02-21, 21:16
刚刚看到论坛有人问一个关于4人追击的问题~
于是花了点时间把问题处理了一下~
分享出來哈~~
:redface: :redface:
问题简要描述,4人分别从正方形的四个定点出发以相同速率以环式追击。
%追击问题
clear
zb=[0,0;10,0;10,10;0,10];%原始坐标点设置
v=[0.3,0.3,0.3,0.3];%速度设置
t=0.01;%最小时间步长
d0=0.05;%判断追到的最小距离
s=size(zb);%确认追击人数
for i=1:10000
zb(s(1,1)+1,:,i)=zb(1,:,i);%使最后一人的追击对象变成第一人,做成环式追击
zbjl(:,:,i)=zb(:,:,i);%坐标数据记录
if sqrt((zb(1,1,i)-zb(2,1,i))^2+(zb(1,2,i)-zb(2,2,i))^2)<d0%判断结束条件,这里是第一人追到第二人为结束条件
break
end
for j=1:s(1,1)
x=zb(j+1,1,i)-zb(j,1,i);%计算追击2人的坐标差
y=zb(j+1,2,i)-zb(j,2,i);
zb(j,1,i+1)=zb(j,1,i)+v(j)*t*x/sqrt(x^2+y^2);%通过坐标差计算和速度计算出在时间步长的时间内坐标移动的位移
zb(j,2,i+1)=zb(j,2,i)+v(j)*t*y/sqrt(x^2+y^2);
end
end
s=size(zbjl);
hold on
for j=1:s(1,1)-1%绘图
for i=1:s(1,3)
x(i)=zbjl(j,1,i);
y(i)=zbjl(j,2,i);
end
plot(x,y)
end
运行结果见图:
于是花了点时间把问题处理了一下~
分享出來哈~~
:redface: :redface:
问题简要描述,4人分别从正方形的四个定点出发以相同速率以环式追击。
%追击问题
clear
zb=[0,0;10,0;10,10;0,10];%原始坐标点设置
v=[0.3,0.3,0.3,0.3];%速度设置
t=0.01;%最小时间步长
d0=0.05;%判断追到的最小距离
s=size(zb);%确认追击人数
for i=1:10000
zb(s(1,1)+1,:,i)=zb(1,:,i);%使最后一人的追击对象变成第一人,做成环式追击
zbjl(:,:,i)=zb(:,:,i);%坐标数据记录
if sqrt((zb(1,1,i)-zb(2,1,i))^2+(zb(1,2,i)-zb(2,2,i))^2)<d0%判断结束条件,这里是第一人追到第二人为结束条件
break
end
for j=1:s(1,1)
x=zb(j+1,1,i)-zb(j,1,i);%计算追击2人的坐标差
y=zb(j+1,2,i)-zb(j,2,i);
zb(j,1,i+1)=zb(j,1,i)+v(j)*t*x/sqrt(x^2+y^2);%通过坐标差计算和速度计算出在时间步长的时间内坐标移动的位移
zb(j,2,i+1)=zb(j,2,i)+v(j)*t*y/sqrt(x^2+y^2);
end
end
s=size(zbjl);
hold on
for j=1:s(1,1)-1%绘图
for i=1:s(1,3)
x(i)=zbjl(j,1,i);
y(i)=zbjl(j,2,i);
end
plot(x,y)
end
运行结果见图: