📄 原版.txt
字号:
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_NTarPos.x>>tank2.m_NTarPos.z;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_NTarPos1.x>>tank2.m_NTarPos1.z;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank1.m_ExplodePos.x>>tank1.m_ExplodePos.z;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_ShellPos[0].x>>tank2.m_ShellPos[0].y>>tank2.m_ShellPos[0].z;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_fAngle_r;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_fAngle_j;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_fAmmo_speed;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_fTime_threshold;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_nOptic_Zoom;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_nangle_research;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_dTranscannonV;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_didentify_max_dis;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_dexact_identify_dis;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_dfar_dis;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_dnear_dis;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.search_num;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.firstfound_time;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank1.m_output.dis_search[0];
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.firstshot_time;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.shot_num;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.firstshot_num;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.hit_num;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.firsthit_num;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.eachhit_time[0];
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.dis_shot[0];
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_output.board_no[0];
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_VehiclePara.vehicle_ch;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_VehiclePara.vehicle_k;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_VehiclePara.vehicle_gd>>tank2.m_VehiclePara.vehicle_gt;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_VehiclePara.ArmorTh[1]>>tank2.m_VehiclePara.ArmorTh[2]>>tank2.m_VehiclePara.ArmorTh[3]>>tank2.m_VehiclePara.ArmorTh[4]>>tank2.m_VehiclePara.ArmorTh[5]>>tank2.m_VehiclePara.ArmorTh[6]>>tank2.m_VehiclePara.ArmorTh[7]>>tank2.m_VehiclePara.ArmorTh[8]>>tank2.m_VehiclePara.ArmorTh[9]>>tank2.m_VehiclePara.ArmorTh[10];
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.NumMap>>tank2.nt;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.Angle_frame;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_nshot_ok;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_nexpl_id;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_nT_Destroy;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_nresult_ok;
InitPara.getline(str,sizeof(str));
InitPara.getline(str,sizeof(str));
InitPara>>tank2.m_nexp_t>>tank2.m_nexp_t1;
InitPara.close();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////机动模型////////////////////////////////////////////////////////////////////////
//功能:给定坦克机动节点,以及坦克的初速度使坦克按照指定的机动路线机动。
//并根据当前的时间得到当前的坐标、下一节点坐标、当前机动速度以及机动方向角。
//参数:
//输入:1、m_sMoveLine[5] 坦克的机动节点
//2、A、D、U、W 环境对机动影响
//3、move_time 坦克已经机动的时间即仿真运行时间
//4、m_fVelocity 坦克的初速度
//输出://1、m_NPos 坦克当前坐标
//2、m_NePos 坦克下一节点坐标
//3、m_fAlpha 坦克当前机动方向角
//4、m_fNowspeed 坦克当前机动速度
void CTank::Move(Point &m_NPos,Point &m_NePos,float move_time)
{
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////观察模型/////////////////////////////////////////////////////////////////////////
//功能:给定坦克与目标的坐标进行发现和识别判断
//参数:
//输入://1、m_NPos 坦克当前坐标
//2、m_NTarPos 目标坐标
//3、K、Q 环境对观察的影响系数
//4、m_dfar_dis、 坦克最远发现距离
//5、m_dnear_dis、 坦克最近发现距离
//6、m_fAlpha、 坦克机动方向角
//7、m_nangle_research 坦克的观察范围角
//8、m_nOptic_Zoom、 坦克的光学仪器修正系数
//9、m_didentify_max_dis、 坦克可识别目标距离
//10、m_dexact_identify_dis 坦克准确识别目标距离
//输出://1、m_nRec_ok 坦克发现并识别目标标志(1为发现并识别,0为为识别)
int CTank::Research_Rec(Point &m_NPos,Point &m_NTarPos)//观察(坦克当前坐标,目标当前坐标)
{
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////调炮模型////////////////////////////////////////////////////////////////////////
//功能:给定坦克当前坐标、下一节点坐标和目标坐标以及调炮速度,使坦克进行调炮并瞄准目标
//参数
//输入:1、m_NPos 坦克当前坐标
//2、m_NTarPos 坦克下一节点坐标
//3、m_NTarPos 目标坐标
//4、m_dTranscannonV 坦克调炮速度
//输出:1、angle_pao 坦克调炮角度及目标观察坦克的夹角
//2、m_dTranscannonTime 坦克调炮时间
//3、m_dMiaozhunTime 坦克瞄准时间
float CTank::TurnGun(Point &m_NPos,Point &m_NTarPos,Point &m_NePos,float &m_dTranscannonV)//调炮瞄准(坦克当前坐标,目标坐标,坦克下一节点坐标,调炮角速度)
{
float dis,dis1,dis2;//坦克现在坐标,下一节点坐标和目标坐标构成的三角形的三边长
float angle_pao;//坦克的调炮角度
//float TranscannonTime;//坦克的调炮时间
//float MiaozhunTime;//坦克的瞄准时间
float fRadomDigit;//随机变量
dis=sqrt((m_NPos.x-m_NTarPos.x)*(m_NPos.x-m_NTarPos.x)+(m_NPos.z-m_NTarPos.z)*(m_NPos.z-m_NTarPos.z));//当前坐标与目标坐标的边长
dis1=sqrt((m_NePos.x-m_NPos.x)*(m_NePos.x-m_NPos.x)+(m_NePos.z-m_NPos.z)*(m_NePos.z-m_NPos.z));//当前坐标与下一节点坐标的边长
dis2=sqrt((m_NePos.x-m_NTarPos.x)*(m_NePos.x-m_NTarPos.x)+(m_NePos.z-m_NTarPos.z)*(m_NePos.z-m_NTarPos.z));//下一节点坐标与目标坐标的边长
angle_pao=acos((dis1*dis1+dis*dis-dis2*dis2)/(2*dis*dis1))*180/3.1415926;
m_dTranscannonTime=angle_pao/m_dTranscannonV;
fRadomDigit=(float)rand()/RAND_MAX;
m_dMiaozhunTime=fRadomDigit*3+2;
return angle_pao;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////射击命中模型///////////////////////////////////////////
//功能:根据坦克的当前坐标、目标的当前坐标等计算出坦克射击的外弹道方程,
//并判断是否命中目标,以及命中的甲板号
//参数
//输入:1、m_NPos 坦克当前坐标
//2、m_NTarPos 目标坐标
//3、m_fAngle_r 目标行进方向角
//4、m_dangle_pao 坦克与目标的观察夹角及目标的调炮角度
//5、Paokou_H 坦克的炮口高度
//6、SShotTable shottable[51]; 射表数据
//输出:1、m_ShellPos 炮弹每帧坐标
//2、m_output.board_no 命中甲板号
//3、m_output.shotted_speed 炮弹着速
//4、m_output.shotted_angle 炮弹着角
int CTank::Shot(Point &m_NTarPos,Point &m_NPos,float &m_fAngle_r,float &m_dangle_pao,OutData &m_output)//射击
{
double Paokou_H=0.8287;//炮口高度
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////毁伤模型/////////////////////////////////////////////////////////////////////////////////////
//功能:根据坦克命中目标情况进行穿甲弹穿透判断
//参数:
//输入:1、D,T,W 穿甲弹性能参数
//2、m_output.board_no 命中甲板号
//3、m_output.shotted_speed 炮弹着角
//4、m_output.shotted_angle 炮弹着速
//5、各甲板厚度 m_VehiclePara.Armor[11]
//输出:击穿厚度以及是否毁伤目标1击毁目标 0未击毁目标
int CTank::Destroy(OutData &m_output)//毁伤
{
float T=600.0;//可穿甲厚度
if( T>500.0 )
{
return 1;
}
else
{
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -