#pragma once #include "matrix.h" #ifdef __cplusplus extern "C" { #endif void Quaternion(float q[4]); void Quaternion_Normalize(float Q[4]); void Quaternion_Canonicalize(float Q[4]); void Quaternion_ByDcm(const float dcm[3][3], float Q[4]); void Quaternion_Enu_ByEuler(float yaw, float pitch, float roll, float Q[4]); void Quaternion_Ned_ByEuler(float yaw, float pitch, float roll, float Q[4]); void Quaternion_ByAxisAngle(const float anxisAngle[3], float Q[4]); void Quaternion_ByTwoVectors(const float Vsrc[3], const float Vdst[3], float Q[4]); void Quaternion_Multiplication(const float Q1[4], const float Q2[4], float Q[4]); void Quaternion_Inversed(const float Q[4], float Q_inv[4]); void Quaternion_Invert(float Q[4]); void Quaternion_Derivative1(const float q21[4], const float angle_rate1[3], float q21_deriv[4]); void Quaternion_Derivative2(const float q21[4], const float angle_rate2[3], float q21_deriv[4]); void Quaternion_RotateByAxisAngle(const float axisAngle[3], float Q[4]); void Quaternion_Conj(const float Q[4], const float V1[3], float V2[3]); void Quaternion_ConjInv(const float Q[4], const float V2[3], float V1[3]); void Quaternion_GetDcmZ(const float Q[4], float dcm_z[3]); #ifdef __cplusplus } #endif