%%平行接近法
clear;clc;
%导入初始变量
det_t=0.001; %t的步长单位:秒
r0=15000; %初始距离
q0=60/180*pi; %初始方位角
sigma0=30/180*pi; %目标初始速度方向
V_feiji=350; %飞机速度m/s
V_daodan=550; %导弹速度
p=V_daodan/V_feiji; %导弹飞机速度比
%目标线垂线上的速度分量为:
VH=sin(q0-sigma0)*V_feiji;
sita=q0-asin(VH/V_daodan);%导弹的弹道倾角
yita=q0-sita;
%初始化时间,坐标信息等
t=0;n=1;r(1)=r0;
daodan(1,1)=0;daodan(1,2)=0;%导弹初始位于原点
feiji(1,1)=r0*cos(q0);
feiji(1,2)=r0*sin(q0);
V_f_x=V_feiji*cos(sigma0);%飞机xy方向的速度
V_f_y=V_feiji*sin(sigma0);
V_d_x=V_daodan*cos(sita);%导弹的速度分量
V_d_y=V_daodan*sin(sita);
site(1,1)=-feiji(1,1);%相对位置
site(1,2)=-feiji(1,2);
while(r(n)>(cos(yita)*V_daodan-cos(q0-sigma0)*V_feiji)*det_t)%可以设置攻击半径
n=n+1;t=t+det_t;
%更新坐标
daodan(n,1)=daodan(n-1,1)+V_d_x*det_t;
daodan(n,2)=daodan(n-1,2)+V_d_y*det_t;
feiji(n,1)=feiji(n-1,1)+V_f_x*det_t;
feiji(n,2)=feiji(n-1,2)+V_f_y*det_t;
site(n,1)=daodan(n,1)-feiji(n,1);
site(n,2)=daodan(n,2)-feiji(n,2);
%更新其他值
r(n)=sqrt((feiji(n,2)-daodan(n,2))^2+(feiji(n,1)-daodan(n,1))^2);
end
fprintf("理论用时: %f s\n",r0/(cos(yita)*V_daodan-cos(q0-sigma0)*V_feiji));
fprintf("数值积分用时: %f s\n",t);