示例#1
0
文件: sbfltmdl.C 项目: ysangkok/sabre
sREAL sbrFlightModel::GetGroundHeight(const sPoint &s0)
{
R_3DPoint p0;

	sPoint2R_3DPoint(s0,p0);
	return (sREAL) (getGroundLevel(p0) / world_scale);
}
示例#2
0
文件: sbfltmdl.C 项目: ysangkok/sabre
void sbrFlightModel::SetPositionAndAttitude(const sPoint &position, const sAttitude &attitude)
{
sPoint	 lookAt;
R_3DPoint look_at;
R_3DPoint look_from;
Vector	 v;

	sSlewer::SetPositionAndAttitude(position,attitude);
	sPoint2R_3DPoint(position,look_from);
	lookAt = position + dirNormal;
	sPoint2R_3DPoint(lookAt,look_at);
	FLIGHT_PORT.set_view(look_from,look_at);
	FLIGHT_PORT.set_roll(CvToSabreAngle(attitude.roll));
	sVector2Vector(dirNormal,v);
	STATE.velocity.direction = v;
}
示例#3
0
文件: pilot.C 项目: zear/sabre
void Pilot::CalcGunLeadPoint(sTargetGeometry &tg)
{
REAL_TYPE t;
sVector   temp;
sPoint    leadPoint;
sPoint    ourPosition;
sPoint	 gunPoint;
sAttitude ourAtt;
sAttitude gunPointAtt;
sAttitude leadPointAtt;

	in_range = 0;
	GetPositionAndAttitude(ourPosition,ourAtt);
	if (!target)
		t = 1.0;
	else
	{
		time_to_target = sel_weapon->calc_hvtime(*flight,*target->get_position());
		if (tg.range <= gunAttackDistance)
		{
			in_range = 1;
			t = time_to_target;
		}
		else
			t = 1.0;
	}
	gun_point = sel_weapon->predict_path(*flight,t);
	R_3DPoint2sPoint(gun_point,gunPoint);
	GetAttitude(gunPoint,temp,gunPointAtt);

	sPoint2R_3DPoint(tg.worldPosition,sel_weapon->target_position);
	
	temp = tg.worldVelocity;
	temp *= t;
	leadPoint = tg.worldPosition + temp;
 	tg.gunLeadPoint = leadPoint;
	GetAttitude(leadPoint,temp,leadPointAtt);

	tg.gunLeadAttitude.pitch = leadPointAtt.pitch - gunPointAtt.pitch;
	tg.gunLeadAttitude.yaw = leadPointAtt.yaw - gunPointAtt.yaw;
	tg.gunLeadRangeSq = sDistanceSquared(tg.gunLeadPoint,ourPosition);
	tg.gunTOF = time_to_target;
	sPoint2R_3DPoint(tg.worldPosition,track_point);
	sPoint2R_3DPoint(tg.leadPoint,lead_track_point);
	sPoint2R_3DPoint(tg.gunLeadPoint,gun_track_point);
}
示例#4
0
文件: sbfltmdl.C 项目: ysangkok/sabre
void sbrFlightModel::SetPosition(const sPoint &position)
{
R_3DPoint look_from;

	sPoint2R_3DPoint(position,look_from);
	FLIGHT_PORT.set_look_from(look_from);
	sSlewer::SetPosition(pos);
}