using vec4 = typename Quaternion< T >::vec4using vec3 = typename Quaternion< T >::vec3operator=(Unit_quaternion &&) -> Unit_quaternion &Unit_quaternion(Unit_quaternion &&)operator=(const Unit_quaternion &) -> Unit_quaternion &Unit_quaternion(const Unit_quaternion &)~Unit_quaternion()Unit_quaternion()operator=(Quaternion< T > && q) -> Unit_quaternion &operator=(const Quaternion< T > & q) -> Unit_quaternion &Unit_quaternion(Quaternion< T > && q)Unit_quaternion(const Quaternion< T > & q)Unit_quaternion(T re, const vec3 & im)Unit_quaternion(const vec4 & q)Unit_quaternion(T s, T x, T y, T z)exp(const vec3 & v) -> Quaterniondata() const -> const vec4 &operator[](int i) const -> Toperator()(int i) const -> Timag() const -> vec3real() const -> Tclear() -> voidz() const -> Ty() const -> Tx() const -> Tw() const -> Toperator=(Quaternion &&) -> Quaternion &Quaternion(Quaternion &&)operator=(const Quaternion &) -> Quaternion &Quaternion(const Quaternion &)~Quaternion()Quaternion()Quaternion(T re, const vec3 & im)Quaternion(const vec4 & q)Quaternion(T s, T x, T y, T z)using quaternion_type = Quaternion< T >using vertex_type = Vertex< T, 3 >using scalar_type = Tclear() -> voidorigin(const vertex_type & rhs) -> voidorigin() const -> const vertex_type &quaternion(const quaternion_type & rhs) -> voidquaternion_conj() const -> const quaternion_type &quaternion() const -> const quaternion_type &Quaternion_coordinate_system(const quaternion_type & q, const vertex_type & origin)Quaternion_coordinate_system(const quaternion_type & q, const quaternion_type & q_conj, const vertex_type & origin)Quaternion_coordinate_system()template <class T> to(const Quaternion_coordinate_system< T > & cs, const Vertex< T, 3 > & v) -> Vertex< T, 3 >template <class T> rotation_matrix(const Quaternion< T > & q) -> Rotation_matrix< T, 3 >Rotation matrix for a quaternion. The matrix is computed as follows. Here are quaternion components.
template <class T> make_coordinate_system(const Quaternion< T > & q, const Quaternion< T > & q_conj, const Vertex< T, 3 > & origin) -> Quaternion_coordinate_system< T >template <class T> operator*=(Quaternion< T > & a, const Quaternion< T > & b) -> Quaternion< T >template <class T> to_vector(const Quaternion< T > & q) -> Quaternion< T >template <class T> operator*(const Quaternion< T > & a, const Vertex< T, 3 > & b) -> Quaternion< T >template <class T> operator*(const Vertex< T, 3 > & a, const Quaternion< T > & b) -> Quaternion< T >template <class T> operator*(const Quaternion< T > & a, T b) -> Quaternion< T >template <class T> imag(const Quaternion< T > & q) -> Vertex< T, 3 >template <class T> length(const Quaternion< T > & q) -> Ttemplate <class T> from(const Quaternion_coordinate_system< T > & cs, const Vertex< T, 3 > & v) -> Vertex< T, 3 >template <class T> vector_from(const Quaternion_coordinate_system< T > & cs, const Vertex< T, 3 > & v) -> Vertex< T, 3 >template <class T> operator+=(Quaternion< T > & a, const Quaternion< T > & b) -> Quaternion< T >template <class T> conj(const Quaternion< T > & q) -> Quaternion< T >template <class T> from_euler_angles(const Vertex< T, 3 > & angles) -> Quaternion< T >template <class T> operator*(T a, const Quaternion< T > & b) -> Quaternion< T >template <class T> operator<<(std::ostream & out, const Quaternion< T > & q) -> std::ostream &template <class T> operator+(Quaternion< T > & a, const Quaternion< T > & b) -> Quaternion< T >template <class T> operator*(const Quaternion< T > & a, const Quaternion< T > & b) -> Quaternion< T >Hamilton product.
template <class T> rotate(const Vertex< T, 3 > & v, const Quaternion< T > & q) -> Vertex< T, 3 >template <class T> operator/(const Quaternion< T > & a, T b) -> Quaternion< T >template <class T> real(const Quaternion< T > & q) -> Ttemplate <class T> vector_to(const Quaternion_coordinate_system< T > & cs, const Vertex< T, 3 > & v) -> Vertex< T, 3 >template <class T> make_coordinate_system(const Quaternion< T > & q, const Vertex< T, 3 > & origin) -> Quaternion_coordinate_system< T >template <class T> to_euler_angles(const Quaternion< T > & q) -> Vertex< T, 3 >Convert quaternion to Euler angles.
template <class T> from_vector(const Quaternion< T > & q) -> Quaternion< T >template <class T> unit(const Quaternion< T > & q) -> Quaternion< T >