fsfw/src/fsfw/coordinates/CoordinateTransformations.h

44 lines
1.8 KiB
C
Raw Normal View History

#ifndef COORDINATETRANSFORMATIONS_H_
#define COORDINATETRANSFORMATIONS_H_
2022-02-02 10:29:30 +01:00
#include <cstring>
2021-07-19 18:26:54 +02:00
#include "coordinatesConf.h"
2021-07-13 20:22:54 +02:00
#include "fsfw/timemanager/Clock.h"
class CoordinateTransformations {
2022-02-02 10:29:30 +01:00
public:
static void positionEcfToEci(const double* ecfCoordinates, double* eciCoordinates,
timeval* timeUTC = NULL);
2022-02-02 10:29:30 +01:00
static void velocityEcfToEci(const double* ecfVelocity, const double* ecfPosition,
double* eciVelocity, timeval* timeUTC = NULL);
2022-02-02 10:29:30 +01:00
static void positionEciToEcf(const double* eciCoordinates, double* ecfCoordinates,
timeval* timeUTC = NULL);
static void velocityEciToEcf(const double* eciVelocity, const double* eciPosition,
double* ecfVelocity, timeval* timeUTC = NULL);
2022-02-02 10:29:30 +01:00
static double getEarthRotationAngle(timeval timeUTC);
2022-02-02 10:29:30 +01:00
static void getEarthRotationMatrix(timeval timeUTC, double matrix[][3]);
2024-02-12 14:20:04 +01:00
static void cartesianFromLatLongAlt(const double lat, const double longi, const double alt,
double* cartesianOutput);
static void latLongAltFromCartesian(const double* vector, double& latitude, double& longitude,
double& altitude);
2022-02-02 10:29:30 +01:00
private:
CoordinateTransformations();
static void ecfToEci(const double* ecfCoordinates, double* eciCoordinates,
const double* ecfPositionIfCoordinatesAreVelocity, timeval* timeUTCin);
static void eciToEcf(const double* eciCoordinates, double* ecfCoordinates,
const double* eciPositionIfCoordinatesAreVelocity, timeval* timeUTCin);
2022-02-02 10:29:30 +01:00
static double getJuleanCenturiesTT(timeval timeUTC);
static void getTransMatrixECITOECF(timeval time, double Tfi[3][3]);
};
#endif /* COORDINATETRANSFORMATIONS_H_ */