123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /***********************************************************
- * File generated by the HALCON-Compiler hcomp version 20.11
- * Usage: Interface to C++
- *
- * Software by: MVTec Software GmbH, www.mvtec.com
- ***********************************************************/
- #ifndef HCPP_HQUATERNION
- #define HCPP_HQUATERNION
- namespace HalconCpp
- {
- // Represents a quaternion.
- class LIntExport HQuaternion : public HDataBase
- {
- public:
- // Create an uninitialized instance
- HQuaternion():HDataBase() {}
- // Copy constructor
- HQuaternion(const HQuaternion& source) : HDataBase(source) {}
- // Constructor from HTuple
- explicit HQuaternion(const HTuple& tuple) : HDataBase(tuple) {}
- // Deep copy of all data represented by this object instance
- HQuaternion Clone() const;
- /*****************************************************************************
- * Operator-based class constructors
- *****************************************************************************/
- // axis_angle_to_quat: Create a rotation quaternion.
- explicit HQuaternion(const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle);
- // axis_angle_to_quat: Create a rotation quaternion.
- explicit HQuaternion(double AxisX, double AxisY, double AxisZ, double Angle);
- /*****************************************************************************
- * Operator overloads (non-member overloads reside in HOperatorOverloads.h)
- *****************************************************************************/
- // Convert to matrix
- operator HHomMat3D() const;
- // Convert to pose
- operator HPose() const;
- // Conjugate quaternion
- HQuaternion operator ~ () const;
- /***************************************************************************
- * Operators *
- ***************************************************************************/
- // Perform a rotation by a unit quaternion.
- double QuatRotatePoint3d(double Px, double Py, double Pz, double* Qy, double* Qz) const;
- // Generate the conjugation of a quaternion.
- HQuaternion QuatConjugate() const;
- // Normalize a quaternion.
- HQuaternion QuatNormalize() const;
- // Create a rotation quaternion.
- void AxisAngleToQuat(const HTuple& AxisX, const HTuple& AxisY, const HTuple& AxisZ, const HTuple& Angle);
- // Create a rotation quaternion.
- void AxisAngleToQuat(double AxisX, double AxisY, double AxisZ, double Angle);
- // Convert a quaternion into the corresponding 3D pose.
- HPose QuatToPose() const;
- // Convert a quaternion into the corresponding rotation matrix.
- HHomMat3D QuatToHomMat3d() const;
- // Convert the rotational part of a 3D pose to a quaternion.
- static HQuaternionArray PoseToQuat(const HPoseArray& Pose);
- // Convert the rotational part of a 3D pose to a quaternion.
- void PoseToQuat(const HPose& Pose);
- // Interpolation of two quaternions.
- HQuaternion QuatInterpolate(const HQuaternion& QuaternionEnd, const HTuple& InterpPos) const;
- // Multiply two quaternions.
- HQuaternion QuatCompose(const HQuaternion& QuaternionRight) const;
- // Deserialize a serialized quaternion.
- void DeserializeQuat(const HSerializedItem& SerializedItemHandle);
- // Serialize a quaternion.
- HSerializedItem SerializeQuat() const;
- };
- class LIntExport HQuaternionArray : public HDataArray
- {
- public:
- HQuaternionArray();
- HQuaternionArray(HQuaternion* classes, Hlong length);
- /* Define a default constructor to prevent compilers that support
- * C++11 R-Value References v3.0 declaring an implicite move
- * assignment/constructor. */
- ~HQuaternionArray() {}
- protected:
- virtual void CreateArray(Hlong length);
- virtual int GetFixedSize() const;
- };
- }
- #endif
|