⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 原版.txt

📁 不太完整是坦克对抗的模型
💻 TXT
📖 第 1 页 / 共 2 页
字号:
		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 + -