HQuaternion.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /***********************************************************
  2. * File generated by the HALCON-Compiler hcomp version 20.11
  3. * Usage: Interface to C++
  4. *
  5. * Software by: MVTec Software GmbH, www.mvtec.com
  6. ***********************************************************/
  7. #ifndef HCPP_HQUATERNION
  8. #define HCPP_HQUATERNION
  9. namespace HalconCpp
  10. {
  11. // Represents a quaternion.
  12. class LIntExport HQuaternion : public HDataBase
  13. {
  14. public:
  15. // Create an uninitialized instance
  16. HQuaternion():HDataBase() {}
  17. // Copy constructor
  18. HQuaternion(const HQuaternion& source) : HDataBase(source) {}
  19. // Constructor from HTuple
  20. explicit HQuaternion(const HTuple& tuple) : HDataBase(tuple) {}
  21. // Deep copy of all data represented by this object instance
  22. HQuaternion Clone() const;
  23. /*****************************************************************************
  24. * Operator-based class constructors
  25. *****************************************************************************/
  26. // axis_angle_to_quat: Create a rotation quaternion.
  27. explicit HQuaternion(const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle);
  28. // axis_angle_to_quat: Create a rotation quaternion.
  29. explicit HQuaternion(double AxisX, double AxisY, double AxisZ, double Angle);
  30. /*****************************************************************************
  31. * Operator overloads (non-member overloads reside in HOperatorOverloads.h)
  32. *****************************************************************************/
  33. // Convert to matrix
  34. operator HHomMat3D() const;
  35. // Convert to pose
  36. operator HPose() const;
  37. // Conjugate quaternion
  38. HQuaternion operator ~ () const;
  39. /***************************************************************************
  40. * Operators *
  41. ***************************************************************************/
  42. // Perform a rotation by a unit quaternion.
  43. double QuatRotatePoint3d(double Px, double Py, double Pz, double* Qy, double* Qz) const;
  44. // Generate the conjugation of a quaternion.
  45. HQuaternion QuatConjugate() const;
  46. // Normalize a quaternion.
  47. HQuaternion QuatNormalize() const;
  48. // Create a rotation quaternion.
  49. void AxisAngleToQuat(const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle);
  50. // Create a rotation quaternion.
  51. void AxisAngleToQuat(double AxisX, double AxisY, double AxisZ, double Angle);
  52. // Convert a quaternion into the corresponding 3D pose.
  53. HPose QuatToPose() const;
  54. // Convert a quaternion into the corresponding rotation matrix.
  55. HHomMat3D QuatToHomMat3d() const;
  56. // Convert the rotational part of a 3D pose to a quaternion.
  57. static HQuaternionArray PoseToQuat(const HPoseArray& Pose);
  58. // Convert the rotational part of a 3D pose to a quaternion.
  59. void PoseToQuat(const HPose& Pose);
  60. // Interpolation of two quaternions.
  61. HQuaternion QuatInterpolate(const HQuaternion& QuaternionEnd, const HTuple& InterpPos) const;
  62. // Multiply two quaternions.
  63. HQuaternion QuatCompose(const HQuaternion& QuaternionRight) const;
  64. // Deserialize a serialized quaternion.
  65. void DeserializeQuat(const HSerializedItem& SerializedItemHandle);
  66. // Serialize a quaternion.
  67. HSerializedItem SerializeQuat() const;
  68. };
  69. class LIntExport HQuaternionArray : public HDataArray
  70. {
  71. public:
  72. HQuaternionArray();
  73. HQuaternionArray(HQuaternion* classes, Hlong length);
  74. /* Define a default constructor to prevent compilers that support
  75. * C++11 R-Value References v3.0 declaring an implicite move
  76. * assignment/constructor. */
  77. ~HQuaternionArray() {}
  78. protected:
  79. virtual void CreateArray(Hlong length);
  80. virtual int GetFixedSize() const;
  81. };
  82. }
  83. #endif