60 lines
1.6 KiB
C++
Raw Normal View History

/************************************************************************
PURPOSE: (Simulate an Aircraft.)
LIBRARY DEPENDENCIES:
((Aircraft/src/Aircraft.o))
**************************************************************************/
#ifndef Aircraft_HH
#define Aircraft_HH
class Aircraft {
public:
// Calculated by numeric integration of state derivatives.
double pos[2];
double vel[2];
// Updated by control logic;
int current_waypoint;
// Static Parameters (Don't change during the simulation.)
double mass;
double thrust_mag_max;
double K_drag;
double heading_rate_gain;
// Control Parameters (Recieved from the variable server client.)
double desired_heading;
double desired_speed; // m/s
bool autoPilot;
// Calculated
// Input to numeric integrator.
double acc[2];
//
double heading;
// Methods
int default_data();
int state_init();
int state_deriv();
int state_integ();
int control();
void set_desired_compass_heading( double compass_heading);
void calc_total_force( double (&F_total_body)[2]);
void calc_drag_force( double (&F_drag_body)[2]);
void calc_thrust_force(double (&F_thrust_body)[2]);
void calc_turning_force(double (&F_turning_body)[2]);
void rotateBodyToWorld(double (&F_total_world)[2], double (&F_total_body)[2] );
};
double psiToCompass( double psi );
double compassToPsi( double compass_heading );
double northWestToPsi (double (&p)[2]) ;
double vector_magnitude(double (&vector)[2]);
void vector_difference(double (&result)[2], double (&A)[2], double (&B)[2] );
//
#endif