mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-27 17:06:31 +08:00
[math] geodetic: RMat instead of Mat33 for ltp_of_ecef
This commit is contained in:
@@ -93,7 +93,7 @@ struct UtmCoor_d {
|
|||||||
struct LtpDef_d {
|
struct LtpDef_d {
|
||||||
struct EcefCoor_d ecef; ///< origin of local frame in ECEF
|
struct EcefCoor_d ecef; ///< origin of local frame in ECEF
|
||||||
struct LlaCoor_d lla; ///< origin of local frame in LLA
|
struct LlaCoor_d lla; ///< origin of local frame in LLA
|
||||||
struct DoubleMat33 ltp_of_ecef; ///< rotation from ECEF to local frame
|
struct DoubleRMat ltp_of_ecef; ///< rotation from ECEF to local frame
|
||||||
double hmsl; ///< height in meters above mean sea level
|
double hmsl; ///< height in meters above mean sea level
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ void ned_of_lla_point_f(struct NedCoor_f* ned, struct LtpDef_f* def, struct LlaC
|
|||||||
*/
|
*/
|
||||||
void ecef_of_enu_point_f(struct EcefCoor_f* ecef, struct LtpDef_f* def, struct EnuCoor_f* enu) {
|
void ecef_of_enu_point_f(struct EcefCoor_f* ecef, struct LtpDef_f* def, struct EnuCoor_f* enu) {
|
||||||
/* convert used floats to double */
|
/* convert used floats to double */
|
||||||
struct DoubleMat33 ltp_of_ecef_d;
|
struct DoubleRMat ltp_of_ecef_d;
|
||||||
ltp_of_ecef_d.m[0] = (double) def->ltp_of_ecef.m[0];
|
ltp_of_ecef_d.m[0] = (double) def->ltp_of_ecef.m[0];
|
||||||
ltp_of_ecef_d.m[1] = (double) def->ltp_of_ecef.m[1];
|
ltp_of_ecef_d.m[1] = (double) def->ltp_of_ecef.m[1];
|
||||||
ltp_of_ecef_d.m[2] = (double) def->ltp_of_ecef.m[2];
|
ltp_of_ecef_d.m[2] = (double) def->ltp_of_ecef.m[2];
|
||||||
@@ -152,7 +152,7 @@ void ecef_of_ned_point_f(struct EcefCoor_f* ecef, struct LtpDef_f* def, struct N
|
|||||||
|
|
||||||
void ecef_of_enu_vect_f(struct EcefCoor_f* ecef, struct LtpDef_f* def, struct EnuCoor_f* enu) {
|
void ecef_of_enu_vect_f(struct EcefCoor_f* ecef, struct LtpDef_f* def, struct EnuCoor_f* enu) {
|
||||||
/* convert used floats to double */
|
/* convert used floats to double */
|
||||||
struct DoubleMat33 ltp_of_ecef_d;
|
struct DoubleRMat ltp_of_ecef_d;
|
||||||
ltp_of_ecef_d.m[0] = (double) def->ltp_of_ecef.m[0];
|
ltp_of_ecef_d.m[0] = (double) def->ltp_of_ecef.m[0];
|
||||||
ltp_of_ecef_d.m[1] = (double) def->ltp_of_ecef.m[1];
|
ltp_of_ecef_d.m[1] = (double) def->ltp_of_ecef.m[1];
|
||||||
ltp_of_ecef_d.m[2] = (double) def->ltp_of_ecef.m[2];
|
ltp_of_ecef_d.m[2] = (double) def->ltp_of_ecef.m[2];
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ struct UtmCoor_f {
|
|||||||
struct LtpDef_f {
|
struct LtpDef_f {
|
||||||
struct EcefCoor_f ecef; ///< origin of local frame in ECEF
|
struct EcefCoor_f ecef; ///< origin of local frame in ECEF
|
||||||
struct LlaCoor_f lla; ///< origin of local frame in LLA
|
struct LlaCoor_f lla; ///< origin of local frame in LLA
|
||||||
struct FloatMat33 ltp_of_ecef; ///< rotation from ECEF to local frame
|
struct FloatRMat ltp_of_ecef; ///< rotation from ECEF to local frame
|
||||||
float hmsl; ///< Height above mean sea level in meters
|
float hmsl; ///< Height above mean sea level in meters
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
#include "pprz_algebra_int.h"
|
#include "pprz_algebra_int.h"
|
||||||
|
|
||||||
|
|
||||||
void ltp_of_ecef_rmat_from_lla_i(struct Int32Mat33* ltp_of_ecef, struct LlaCoor_i* lla) {
|
void ltp_of_ecef_rmat_from_lla_i(struct Int32RMat* ltp_of_ecef, struct LlaCoor_i* lla) {
|
||||||
|
|
||||||
#if USE_DOUBLE_PRECISION_TRIG
|
#if USE_DOUBLE_PRECISION_TRIG
|
||||||
int32_t sin_lat = rint(BFP_OF_REAL(sin(RAD_OF_EM7DEG((double)lla->lat)), HIGH_RES_TRIG_FRAC));
|
int32_t sin_lat = rint(BFP_OF_REAL(sin(RAD_OF_EM7DEG((double)lla->lat)), HIGH_RES_TRIG_FRAC));
|
||||||
|
|||||||
@@ -95,11 +95,11 @@ struct UtmCoor_i {
|
|||||||
struct LtpDef_i {
|
struct LtpDef_i {
|
||||||
struct EcefCoor_i ecef; ///< Reference point in ecef
|
struct EcefCoor_i ecef; ///< Reference point in ecef
|
||||||
struct LlaCoor_i lla; ///< Reference point in lla
|
struct LlaCoor_i lla; ///< Reference point in lla
|
||||||
struct Int32Mat33 ltp_of_ecef; ///< Rotation matrix
|
struct Int32RMat ltp_of_ecef; ///< Rotation matrix
|
||||||
int32_t hmsl; ///< Height above mean sea level in mm
|
int32_t hmsl; ///< Height above mean sea level in mm
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void ltp_of_ecef_rmat_from_lla_i(struct Int32Mat33* ltp_of_ecef, struct LlaCoor_i* lla);
|
extern void ltp_of_ecef_rmat_from_lla_i(struct Int32RMat* ltp_of_ecef, struct LlaCoor_i* lla);
|
||||||
extern void ltp_def_from_ecef_i(struct LtpDef_i* def, struct EcefCoor_i* ecef);
|
extern void ltp_def_from_ecef_i(struct LtpDef_i* def, struct EcefCoor_i* ecef);
|
||||||
extern void ltp_def_from_lla_i(struct LtpDef_i* def, struct LlaCoor_i* lla);
|
extern void ltp_def_from_lla_i(struct LtpDef_i* def, struct LlaCoor_i* lla);
|
||||||
extern void lla_of_ecef_i(struct LlaCoor_i* out, struct EcefCoor_i* in);
|
extern void lla_of_ecef_i(struct LlaCoor_i* out, struct EcefCoor_i* in);
|
||||||
|
|||||||
Reference in New Issue
Block a user