// out the middle of the western hemisphere.
class Glue {
public:
- static void calcAlphaBeta(State* s, float* alpha, float* beta);
+ static void calcAlphaBeta(State* s, float* wind, 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);
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);
-
-private:
-
- // WGS84 numbers
- static const double EQURAD = 6378137; // equatorial radius
- static const double STRETCH = 1.003352810665; // equ./polar radius
-
- // Derived from the above
- static const double SQUASH = 0.99665839311; // 1/STRETCH
- static const double POLRAD = 6356823.77346; // EQURAD*SQUASH
- static const double iPOLRAD = 1.57311266701e-07; // 1/POLRAD
+ static void geodUp(double lat, double lon, float* up);
+ static void geodUp(double* pos, float* up);
};
}; // namespace yasim