12 #include <Utility/String/NRE_String.hpp> 15 #include "../NRE_Math.hpp" 16 #include "../NRE_Unit.hpp" 17 #include <Utility/Interfaces/Stringable/NRE_Stringable.hpp> 30 template<
class>
class Vector3D;
31 template<
class>
class Vector4D;
38 class Quaternion :
public Utility::Stringable<Quaternion<T>> {
55 template <
class K,
class L,
class N,
class M>
64 template <
class K,
class L,
class N>
71 template <
class K,
class L>
72 constexpr
Quaternion(Vector3D<K>
const& ax, L an);
113 constexpr T
getX()
const;
117 constexpr T
getY()
const;
121 constexpr T
getZ()
const;
125 constexpr T
getW()
const;
129 constexpr Vector3D<T>
getAxis()
const;
141 constexpr
void setX(K x);
147 constexpr
void setY(K y);
153 constexpr
void setZ(K z);
159 constexpr
void setW(K w);
166 inline void setAngleAxis(Vector3D<K>
const& axis, Angle w);
176 long double norm()
const;
188 constexpr
const T*
value()
const;
234 constexpr Quaternion<std::common_type_t<T, K>>
operator*(Quaternion<K>
const& q)
const;
246 #include "NRE_Quaternion.tpp"
constexpr T normSquared() const
constexpr void setIdentity()
constexpr Quaternion< std::common_type_t< T, K > > operator*(Quaternion< K > const &q) const
Utility::String toString() const
constexpr Quaternion()=default
void setAngleAxis(Vector3D< K > const &axis, Angle w)
constexpr Quaternion & operator=(Quaternion const &q)=default
constexpr const T * value() const
The NearlyRealEngine's global namespace.
constexpr Vector4D< T > const & getQuaternion() const
constexpr Quaternion & operator*=(Quaternion< K > const &q)
constexpr Vector3D< T > getAxis() const