/* * quaternion.hpp * * Created on: Jun 17, 2024 * Author: Dario */ #ifndef STA_PEAK_QUATERNION_HPP #define STA_PEAK_QUATERNION_HPP #include namespace sta { namespace math { class Quaternion { public: Quaternion(float w, float x, float y, float z); Quaternion(); Quaternion integrate(float dt, float ox, float oy, float oz); static Quaternion unit(); float norm(); matrix toRotationMatrix(); Quaternion normalized(); Quaternion operator*(const Quaternion& quat); Quaternion operator+(const Quaternion& quat); public: float x, y, z, w; }; Quaternion operator+(const Quaternion& q1, const Quaternion& q2); Quaternion operator*(const Quaternion& q1, const Quaternion& q2); Quaternion operator*(const Quaternion& quat, float scalar); Quaternion operator*(float scalar, const Quaternion& quat); Quaternion operator*(const Quaternion& quat, double scalar); Quaternion operator*(double scalar, const Quaternion& quat); } // namespace math } // namespace sta #endif /* STA_PEAK_QUATERNION_HPP */