%导弹拦截
clear %清除变量
rand('state',0) %随机状态初始化
v2=1.1; %拦截导弹速率与来袭导弹初速度之比
%v2=1; %拦截导弹速率与来袭导弹初速度之比
%v2=0.9; %拦截导弹速率与来袭导弹初速度之比
T=linspace(0,1); %飞行时间
while 1 %做无限循环
figure %创建图形窗口
axis([0,1,-0.2,0.6]) %坐标范围
axis equal off %隐藏坐标
title('导弹拦截','FontSize',20) %标题
text(0,0.5,'导弹来袭时,按空格键发射拦截导弹.','FontSize',16)%显示操作方法
hold on %保持图像
plot([0,1],[0,0]) %画地平线
th=90*rand; %0到90度之间的随机角度
th=th*pi/180; %化为弧度
xx1=0;yy1=0; %来袭导弹的初坐标
xx2=1;yy2=0; %拦截导弹的初坐标
x2=1;y2=0; %拦截导弹的终坐标的初值
c=''; %字符变量置空
dt=0; %时间间隔取0
for t=T %按来袭导弹的时间循环
x1=t*sin(2*th); %计算来袭导弹的横坐标
y1=2*sin(th)^2*(t-t^2); %计算来袭导弹纵坐标
plot([xx1,x1],[yy1,y1],'k','LineWidth',2)%画来袭导弹轨迹
s=sqrt((x2-x1)^2+(y2-y1)^2); %计算两弹之间的距离
if s<=0.02|y1<=0&t~=0 %如果两导弹距离很小或对方导弹落地
plot(x1,y1,'*','MarkerSize',20)%画爆炸射线
break %退出循环
end %结束循环
xx1=x1;yy1=y1; %保存来袭导弹的坐标
c=get(gcf,'CurrentCharacter'); %从键盘取图形窗口的当前字符
if length(c)~=0&&c==' ' %如果c中有字符且为空格
dt=T(2); %取时间间隔
end %结束条件
x2=x2-(x2-x1)/s*2*v2*sin(th)*dt;%拦截导弹的横坐标
y2=y2-(y2-y1)/s*2*v2*sin(th)*dt;%拦截导弹的纵坐标
plot([xx2,x2],[yy2,y2],'r','LineWidth',2)%画拦截导弹的轨迹
xx2=x2;yy2=y2; %保存拦截导弹的坐标
pause(0.05) %延时
end %结束循环
c=input('还玩吗?(y/n)','s'); %提示键盘输入选择
if c~='y' break,end %不是y则退出游戏
end %结束循环
运动学导弹拦截计算方法含Matlab源码.zip
版权申诉
14 浏览量
2022-04-02
16:06:07
上传
评论
收藏 12KB ZIP 举报
天天Matlab科研工作室
- 粉丝: 3w+
- 资源: 7259
最新资源
- 基于Java实现的pagerank算法.zip
- 基于C++实现的pagerank算法.zip
- 基于Python实现的pagerank算法.zip
- java面试题-leetcode题解之第14题最长公共前缀.zip
- java面试题-leetcode题解之第28题找出字符串中第一个匹配项的下标.zip
- java面试题-leetcode题解之第31题下一个排列.zip
- java面试题-leetcode题解之第6题Z字形变换.zip
- java面试题-leetcode题解之第8题字符串转换整数atoi.zip
- java面试题-leetcode题解之第13题罗马数字转整数.zip
- 夏总-2405232148.awb
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈