quaternion.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include "matrix.h"
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. void Quaternion(float q[4]);
  7. void Quaternion_Normalize(float Q[4]);
  8. void Quaternion_Canonicalize(float Q[4]);
  9. void Quaternion_ByDcm(const float dcm[3][3], float Q[4]);
  10. void Quaternion_Enu_ByEuler(float yaw, float pitch, float roll, float Q[4]);
  11. void Quaternion_Ned_ByEuler(float yaw, float pitch, float roll, float Q[4]);
  12. void Quaternion_ByAxisAngle(const float anxisAngle[3], float Q[4]);
  13. void Quaternion_ByTwoVectors(const float Vsrc[3], const float Vdst[3],
  14. float Q[4]);
  15. void Quaternion_Multiplication(const float Q1[4], const float Q2[4],
  16. float Q[4]);
  17. void Quaternion_Inversed(const float Q[4], float Q_inv[4]);
  18. void Quaternion_Invert(float Q[4]);
  19. void Quaternion_Derivative1(const float q21[4], const float angle_rate1[3],
  20. float q21_deriv[4]);
  21. void Quaternion_Derivative2(const float q21[4], const float angle_rate2[3],
  22. float q21_deriv[4]);
  23. void Quaternion_RotateByAxisAngle(const float axisAngle[3], float Q[4]);
  24. void Quaternion_Conj(const float Q[4], const float V1[3], float V2[3]);
  25. void Quaternion_ConjInv(const float Q[4], const float V2[3], float V1[3]);
  26. void Quaternion_GetDcmZ(const float Q[4], float dcm_z[3]);
  27. #ifdef __cplusplus
  28. }
  29. #endif