439a9fa1e4
places now use sgCartToGeod() instead of rolling their own approximation. And YASim is now using exactly the same 3D coordinate system as the rest of FlightGear is.
36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
#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);
|
|
|
|
// 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);
|
|
|
|
static void geodUp(double lat, double lon, float* up);
|
|
static void geodUp(double* pos, float* up);
|
|
};
|
|
|
|
}; // namespace yasim
|
|
#endif // _GLUE_HPP
|