1 / 22
文档名称:

仿真飞机实验报告.doc

格式:doc   大小:1,283KB   页数:22页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

仿真飞机实验报告.doc

上传人:buhouhui915 2017/11/18 文件大小:1.25 MB

下载得到文件列表

仿真飞机实验报告.doc

文档介绍

文档介绍:题目:仿真飞机
:
姓名班级
李辉软件工程一班
王克软件工程一班
温晨阳软件工程一班
徐成志软件工程一班
王振航软件工程一班
梁桂铭软件工程二班
:
如何确定椭圆上的机群坐标?
这个问题是这个题目里面最难的,也是最关键的,只要解决坐标问题,一切都迎刃而解。
(1)首先,我们如何去建立坐标系,才能把问题简化?如下图所示,题目里面的坐标,
15
29
15
41
31
(42,20)
B2
(38,14)
T2
(44,41)
B1
(43,34)
T1
(12,39)
R1
(09,14)
R2
B1
R1
T1
B2
T2
R2
如果我们按照这个图上面的坐标来以此建立坐标系,那么求出椭圆上的各个坐标点将会是非常困难的。题目是死的,人是活的,所以我们换另一种思路去解题,
图上有三个椭圆,我们以每个椭圆来分开建立坐标系,然后把各个椭圆上的坐标储存到三个数组形的结构体当中,即保证了各个椭圆上的坐标不会互相干扰,又能方便解题。其次,我们以R1位原点,椭圆的长轴位X轴,过原点且垂直于长轴的直线位Y轴,这里我们只建立了一个坐标系,如图所示。
y
B1(,)
T1(31,0)
R1(0,0)
0
x
2
2
2
2
x +y =1028
(x-31) +y =50
把R1的坐标(12,39)换成(0,0),因为椭圆的长轴为31,所以T1的坐标(43,34)自然就换成了(31,0);B1的坐标(x,y)利用B1到R1的距离等于1028和B1到T1的距离等于50,建立方程组:
解出T1的坐标(,)。
求出椭圆的方程:
=1
2
y
2
(x-)

2

2
5
+

如何确定椭圆上的飞机坐标,利用求极限原理,飞机飞过的距离(v*t),近似看成飞机的横坐标,飞机的速度用伪随机数得出,而时间我们可以取一个大于0小于1的值,时间的精度越小,误差越小,通过这种求极限原理的方法求出飞机的横坐标,然后根据椭圆的方程求出飞机的纵坐标。
如何求出圆和椭圆的交点?首先用一个for循环记录椭圆上机群的坐标,其次用一个if语句来判断是不是交点,判断的依据是:飞机的坐标到B1(圆心)的坐标小于等于15;如果判断条件为真,则结束for循环语句,然后把交点的坐标储存起来。
另外的两个坐标系和各个点坐标也是用以上同样的方法来建立,在这里就我们就不详细讲解。
如何去预判蓝军的导弹能够飞到红军飞机即将飞到的位置(坐标)?
这个问题其实并不难,第一次预判:红军机群从某一位置个飞到(椭圆和圆的)交点的时间,刚好是导弹从基地飞到交点的时间(可以有误差),但是不可能同时飞到交点处,因为当1枚导弹与机群的距离小于D时,以伪随机数决定是拦截成功还是干扰成功。
接下来的预判还是同样的方法:红军机群a地个飞到b地,刚好是导弹从基地飞到b地的时间(可以有误差),1枚导弹与机群的距离小于D时,以伪随机数决定是拦截成功还是干扰成功。
如何去判断轰炸成功还是轰炸失败?
当红军机群进入蓝军导弹的作战半径内,以一个for循环语句执行蓝军导弹预判红军机群位置并且将拦截红军机群;如果蓝军导弹拦截红军机群成功,则红军机群数量减少一和蓝军导弹数量减少一;如果红军机群干扰蓝军导弹成功(蓝军导弹拦截红军机群失败),则红军机群数量不变和蓝军导弹数量减少一;
如果红军机群数量大于0并且蓝军导弹数量等于0,这时候红军就已经轰炸成功,结束for循环;或者红军机群到达军事目标(T1)上空半径为1的区域,则轰炸成功,结束for循环;如果红军机群数量为0且没有到达军事目标(T1)上空半径为1的区域,则轰炸失败,结束for循环。
返航时候的拦截。
轰炸成功才能返航,返航的时候蓝军导弹还是要对红军机群的位置进行预判(预判思路请看问题2),以伪随机数决定是拦截成功还是干扰成功,如果红军机群能够安全脱离蓝军导弹的作战半径内,则返航成功,否则失败。
算法思想
通过建立合适的坐标系求出各个点的坐标,特别是机群坐标,确定时间精度减小误差,进行轰炸任务。

定义头文件和预定义
#include<iostream >
#include<cstdlib>
#include<ctime>
#include<cmath>
using namespace std;
#define MAXSIZE 1000000
#define T /*时间精度*/
全局变量
int q; /*记录干扰的次数和记录拦截的次数*/
数据类型
struct Red{