1
0
Fork 0
flightgear/src/FDM/YASim/Glue.hpp

50 lines
1.7 KiB
C++
Raw Normal View History

#ifndef _GLUE_HPP
#define _GLUE_HPP
#include "BodyEnvironment.hpp"
namespace yasim {
// The XYZ coordinate system has Z as the earth's axis, the Y axis
// pointing out the equator at zero longitude, and the X axis pointing
// out the middle of the western hemisphere.
class Glue {
public:
static void calcAlphaBeta(State* s, float* alpha, float* beta);
// Calculates the instantaneous rotation velocities about each
// axis.
static void calcEulerRates(State* s,
float* roll, float* pitch, float* hdg);
static void xyz2geoc(double* xyz,
double* lat, double* lon, double* alt);
static void geoc2xyz(double lat, double lon, double alt,
double* out);
static void xyz2geod(double* xyz,
double* lat, double* lon, double* alt);
static void geod2xyz(double lat, double lon, double alt,
double* out);
static double geod2geocLat(double lat);
static double geoc2geodLat(double lat);
// Returns a global to "local" (north, east, down) matrix. Note
// that the latitude passed in is geoDETic.
static void xyz2nedMat(double lat, double lon, float* out);
// Conversion between a euler triplet and a matrix that transforms
// "local" (north/east/down) coordinates to the aircraft frame.
static void euler2orient(float roll, float pitch, float hdg,
float* out);
static void orient2euler(float* o,
float* roll, float* pitch, float* hdg);
// Returns a geodetic (i.e. gravitational, "level", etc...) "up"
// vector for the specified xyz position.
static void geodUp(double* pos, float* out);
};
}; // namespace yasim
#endif // _GLUE_HPP