#include <quaternion.h>
Public Types | |
enum | { array_size = 4 } |
Record result size as an enum. More... | |
enum | { W = order_type::W, X = order_type::X, Y = order_type::Y, Z = order_type::Z } |
Localize the ordering as an enum. More... | |
typedef cml::et::assignable_tag | assignable_tag |
typedef vector_type::const_reference | const_reference |
typedef Cross | cross_type |
typedef const quaternion_type & | expr_const_reference |
typedef quaternion_type & | expr_reference |
typedef quaternion_type | expr_type |
typedef ArrayType::template rebind< 4 >::other | generator_type |
typedef vector_temporary::subvector_type | imaginary_type |
typedef vector_type::memory_tag | memory_tag |
typedef Order | order_type |
typedef quaternion< Element, storage_type, order_type, cross_type > | quaternion_type |
typedef vector_type::reference | reference |
typedef cml::et::quaternion_result_tag | result_tag |
typedef vector_type::size_tag | size_tag |
typedef ArrayType | storage_type |
typedef quaternion< Element, typename vector_temporary::storage_type, order_type, cross_type > | temporary_type |
typedef vector_type::value_type | value_type |
typedef vector_type::temporary_type | vector_temporary |
typedef vector< Element, generator_type > | vector_type |
Public Member Functions | |
const vector_type & | as_vector () const |
Return the vector representing the quaternion. | |
quaternion_type & | conjugate () |
Set this quaternion to the conjugate. | |
const vector_type::pointer | data () const |
Return access to the data as a const raw pointer. | |
vector_type::pointer | data () |
Return access to the data as a raw pointer. | |
temporary_type | exp (value_type tolerance=epsilon< value_type >::placeholder()) const |
Return the result of the exponential function as applied to this quaternion. | |
quaternion_type & | identity () |
Set this quaternion to the multiplicative identity. | |
imaginary_type | imaginary () const |
Return the imaginary vector. | |
quaternion_type & | inverse () |
Set this quaternion to the inverse. | |
value_type | length () const |
Return the quaternion length. | |
value_type | length_squared () const |
Return square of the quaternion length. | |
temporary_type | log (value_type tolerance=epsilon< value_type >::placeholder()) const |
Return the log of this quaternion. | |
value_type | norm () const |
Return the Cayley norm of the quaternion. | |
quaternion_type & | normalize () |
Normalize this quaternion (divide by its length). | |
template<typename XprT > | |
quaternion_type & | operator*= (QUATXPR_ARG_TYPE e) |
Accumulated multiplication with a quaternion expression. | |
quaternion_type & | operator*= (const quaternion_type &q) |
Accumulated multiplication with a quaternion. | |
reference | operator[] (size_t i) |
Mutable access to the quaternion as a vector. | |
const_reference | operator[] (size_t i) const |
Const access to the quaternion as a vector. | |
template<typename XprT > | |
quaternion (const value_type &s, VECXPR_ARG_TYPE e) | |
Initialize both the real and imaginary parts. | |
template<typename XprT > | |
quaternion (VECXPR_ARG_TYPE e) | |
Initialize from a VectorXpr. | |
quaternion (const value_type &s, const value_type v[3]) | |
Initialize both the real and imaginary parts. | |
quaternion (const value_type v[3], const value_type &s) | |
Initialize both the real and imaginary parts. | |
quaternion (const imaginary_type &v, const value_type &s) | |
Initialize both the real and imaginary parts. | |
quaternion (const value_type &s, const imaginary_type &v) | |
Initialize both the real and imaginary parts. | |
quaternion (const value_type &a, const value_type &b, const value_type &c, const value_type &d) | |
Initialize from 4 scalars. | |
quaternion (const value_type v[4]) | |
Initialize from an array of scalars. | |
quaternion (const vector_type &v) | |
Initialize from a 4-vector. | |
template<typename XprT > | |
quaternion (QUATXPR_ARG_TYPE e) | |
Copy construct from a QuaternionXpr. | |
template<typename E , class AT > | |
quaternion (const quaternion< E, AT, order_type, cross_type > &q) | |
Construct from a quaternion having a different array type. | |
quaternion (const quaternion_type &q) | |
Copy construct from the same type of quaternion. | |
quaternion (Element *const array) | |
Initializer for an external<> vector type. | |
quaternion () | |
Default initializer. | |
void | random (value_type min, value_type max) |
Fill quaternion with random elements. | |
value_type | real () const |
Return the scalar part. | |
Protected Member Functions | |
void | assign (const value_type &a, const value_type &b, const value_type &c, const value_type &d, vector_first) |
Overloaded function to assign the quaternion from 4 scalars. | |
void | assign (const value_type &a, const value_type &b, const value_type &c, const value_type &d, scalar_first) |
Overloaded function to assign the quaternion from 4 scalars. | |
Protected Attributes | |
vector_type | m_q |
Private Member Functions | |
CML_STATIC_REQUIRE_M ((same_type< ArrayType, fixed<> >::is_true||same_type< ArrayType, external<> >::is_true), quaternion_requires_fixed_size_array_type_error) |
Definition at line 46 of file quaternion.h.
typedef cml::et::assignable_tag cml::quaternion< Element, ArrayType, Order, Cross >::assignable_tag |
Definition at line 109 of file quaternion.h.
typedef vector_type::const_reference cml::quaternion< Element, ArrayType, Order, Cross >::const_reference |
Definition at line 77 of file quaternion.h.
typedef Cross cml::quaternion< Element, ArrayType, Order, Cross >::cross_type |
Definition at line 72 of file quaternion.h.
typedef const quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::expr_const_reference |
Definition at line 94 of file quaternion.h.
typedef quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::expr_reference |
Definition at line 93 of file quaternion.h.
typedef quaternion_type cml::quaternion< Element, ArrayType, Order, Cross >::expr_type |
Definition at line 85 of file quaternion.h.
typedef ArrayType::template rebind<4>::other cml::quaternion< Element, ArrayType, Order, Cross >::generator_type |
Definition at line 58 of file quaternion.h.
typedef vector_temporary::subvector_type cml::quaternion< Element, ArrayType, Order, Cross >::imaginary_type |
Definition at line 103 of file quaternion.h.
typedef vector_type::memory_tag cml::quaternion< Element, ArrayType, Order, Cross >::memory_tag |
Definition at line 97 of file quaternion.h.
typedef Order cml::quaternion< Element, ArrayType, Order, Cross >::order_type |
Definition at line 69 of file quaternion.h.
typedef quaternion<Element,storage_type,order_type,cross_type> cml::quaternion< Element, ArrayType, Order, Cross >::quaternion_type |
Definition at line 82 of file quaternion.h.
typedef vector_type::reference cml::quaternion< Element, ArrayType, Order, Cross >::reference |
Definition at line 76 of file quaternion.h.
typedef cml::et::quaternion_result_tag cml::quaternion< Element, ArrayType, Order, Cross >::result_tag |
Definition at line 106 of file quaternion.h.
typedef vector_type::size_tag cml::quaternion< Element, ArrayType, Order, Cross >::size_tag |
Definition at line 100 of file quaternion.h.
typedef ArrayType cml::quaternion< Element, ArrayType, Order, Cross >::storage_type |
Definition at line 57 of file quaternion.h.
typedef quaternion< Element, typename vector_temporary::storage_type, order_type, cross_type> cml::quaternion< Element, ArrayType, Order, Cross >::temporary_type |
Definition at line 90 of file quaternion.h.
typedef vector_type::value_type cml::quaternion< Element, ArrayType, Order, Cross >::value_type |
Definition at line 75 of file quaternion.h.
typedef vector_type::temporary_type cml::quaternion< Element, ArrayType, Order, Cross >::vector_temporary |
Definition at line 66 of file quaternion.h.
typedef vector<Element, generator_type> cml::quaternion< Element, ArrayType, Order, Cross >::vector_type |
Definition at line 63 of file quaternion.h.
anonymous enum |
anonymous enum |
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | ) | [inline] |
Default initializer.
Definition at line 243 of file quaternion.h.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | Element *const | array | ) | [inline] |
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const quaternion_type & | q | ) | [inline] |
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const quaternion< E, AT, order_type, cross_type > & | q | ) | [inline] |
Construct from a quaternion having a different array type.
Definition at line 252 of file quaternion.h.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | QUATXPR_ARG_TYPE | e | ) | [inline] |
Copy construct from a QuaternionXpr.
Definition at line 257 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const vector_type & | v | ) | [inline] |
Initialize from a 4-vector.
If Order is scalar_first, then v[0] is the real part. Otherwise, v[3] is the real part.
Definition at line 272 of file quaternion.h.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const value_type | v[4] | ) | [inline] |
Initialize from an array of scalars.
If Order is scalar_first, then v[0] is the real part. Otherwise, v[3] is the real part.
Definition at line 282 of file quaternion.h.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const value_type & | a, | |
const value_type & | b, | |||
const value_type & | c, | |||
const value_type & | d | |||
) | [inline] |
Initialize from 4 scalars.
If Order is scalar_first, then a is the real part, and (b,c,d) is the imaginary part. Otherwise, (a,b,c) is the imaginary part, and d is the real part.
Definition at line 290 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::assign().
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const value_type & | s, | |
const imaginary_type & | v | |||
) | [inline] |
Initialize both the real and imaginary parts.
The imaginary part is given by a 3-vector. Although the imaginary part is specified first, the proper coefficient order (vector or scalar first) is maintained.
Definition at line 304 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const imaginary_type & | v, | |
const value_type & | s | |||
) | [inline] |
Initialize both the real and imaginary parts.
The imaginary part is given by a 3-vector. Although the imaginary part is specified second, the proper coefficient order (vector or scalar first) is maintained.
Definition at line 314 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const value_type | v[3], | |
const value_type & | s | |||
) | [inline] |
Initialize both the real and imaginary parts.
The imaginary part is given by an array of scalars. Although the imaginary part is specified first, the proper coefficient order (vector or scalar first) is maintained.
Definition at line 324 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const value_type & | s, | |
const value_type | v[3] | |||
) | [inline] |
Initialize both the real and imaginary parts.
The imaginary part is given by an array of scalars. Although the imaginary part is specified second, the proper coefficient order (vector or scalar first) is maintained.
Definition at line 334 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | VECXPR_ARG_TYPE | e | ) | [inline] |
cml::quaternion< Element, ArrayType, Order, Cross >::quaternion | ( | const value_type & | s, | |
VECXPR_ARG_TYPE | e | |||
) | [inline] |
Initialize both the real and imaginary parts.
The imaginary part is initialized with a VectorXpr.
Definition at line 349 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
const vector_type& cml::quaternion< Element, ArrayType, Order, Cross >::as_vector | ( | ) | const [inline] |
Return the vector representing the quaternion.
Definition at line 142 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q.
void cml::quaternion< Element, ArrayType, Order, Cross >::assign | ( | const value_type & | a, | |
const value_type & | b, | |||
const value_type & | c, | |||
const value_type & | d, | |||
vector_first | ||||
) | [inline, protected] |
Overloaded function to assign the quaternion from 4 scalars.
Definition at line 509 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
void cml::quaternion< Element, ArrayType, Order, Cross >::assign | ( | const value_type & | a, | |
const value_type & | b, | |||
const value_type & | c, | |||
const value_type & | d, | |||
scalar_first | ||||
) | [inline, protected] |
Overloaded function to assign the quaternion from 4 scalars.
Definition at line 502 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
Referenced by cml::quaternion< Element, ArrayType, Order, Cross >::quaternion().
cml::quaternion< Element, ArrayType, Order, Cross >::CML_STATIC_REQUIRE_M | ( | (same_type< ArrayType, fixed<> >::is_true||same_type< ArrayType, external<> >::is_true) | , | |
quaternion_requires_fixed_size_array_type_error | ||||
) | [private] |
quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::conjugate | ( | ) | [inline] |
const vector_type::pointer cml::quaternion< Element, ArrayType, Order, Cross >::data | ( | ) | const [inline] |
Return access to the data as a const raw pointer.
Definition at line 452 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q.
vector_type::pointer cml::quaternion< Element, ArrayType, Order, Cross >::data | ( | ) | [inline] |
Return access to the data as a raw pointer.
Definition at line 449 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q.
temporary_type cml::quaternion< Element, ArrayType, Order, Cross >::exp | ( | value_type | tolerance = epsilon<value_type>::placeholder() |
) | const [inline] |
Return the result of the exponential function as applied to this quaternion.
Definition at line 206 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::imaginary(), and cml::quaternion< Element, ArrayType, Order, Cross >::length().
quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::identity | ( | ) | [inline] |
Set this quaternion to the multiplicative identity.
Definition at line 180 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::W, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
Referenced by cml::identity(), and cml::quaternion_rotation_world_axis().
imaginary_type cml::quaternion< Element, ArrayType, Order, Cross >::imaginary | ( | ) | const [inline] |
Return the imaginary vector.
Definition at line 132 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, cml::quaternion< Element, ArrayType, Order, Cross >::X, cml::quaternion< Element, ArrayType, Order, Cross >::Y, and cml::quaternion< Element, ArrayType, Order, Cross >::Z.
Referenced by cml::quaternion< Element, ArrayType, Order, Cross >::exp(), cml::imaginary(), and cml::quaternion< Element, ArrayType, Order, Cross >::log().
quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::inverse | ( | ) | [inline] |
value_type cml::quaternion< Element, ArrayType, Order, Cross >::length | ( | ) | const [inline] |
Return the quaternion length.
Definition at line 157 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::length_squared().
Referenced by cml::quaternion< Element, ArrayType, Order, Cross >::exp(), cml::length(), and cml::quaternion< Element, ArrayType, Order, Cross >::normalize().
value_type cml::quaternion< Element, ArrayType, Order, Cross >::length_squared | ( | ) | const [inline] |
Return square of the quaternion length.
Definition at line 152 of file quaternion.h.
References cml::dot().
Referenced by cml::quaternion< Element, ArrayType, Order, Cross >::length(), cml::length_squared(), cml::norm(), and cml::quaternion< Element, ArrayType, Order, Cross >::norm().
temporary_type cml::quaternion< Element, ArrayType, Order, Cross >::log | ( | value_type | tolerance = epsilon<value_type>::placeholder() |
) | const [inline] |
Return the log of this quaternion.
Definition at line 189 of file quaternion.h.
References cml::acos_safe(), cml::quaternion< Element, ArrayType, Order, Cross >::imaginary(), and cml::quaternion< Element, ArrayType, Order, Cross >::real().
value_type cml::quaternion< Element, ArrayType, Order, Cross >::norm | ( | ) | const [inline] |
Return the Cayley norm of the quaternion.
Definition at line 147 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::length_squared().
quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::normalize | ( | ) | [inline] |
Normalize this quaternion (divide by its length).
Definition at line 165 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::length().
Referenced by cml::normalize(), and cml::quaternion_rotation_vec_to_vec().
quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::operator*= | ( | QUATXPR_ARG_TYPE | e | ) | [inline] |
Accumulated multiplication with a quaternion expression.
Compute p = p * e for a quaternion p and a quaternion expression e.
Definition at line 444 of file quaternion.h.
quaternion_type& cml::quaternion< Element, ArrayType, Order, Cross >::operator*= | ( | const quaternion_type & | q | ) | [inline] |
Accumulated multiplication with a quaternion.
Compute p = p * q for two quaternions p and q.
Definition at line 429 of file quaternion.h.
reference cml::quaternion< Element, ArrayType, Order, Cross >::operator[] | ( | size_t | i | ) | [inline] |
Mutable access to the quaternion as a vector.
Definition at line 224 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q.
const_reference cml::quaternion< Element, ArrayType, Order, Cross >::operator[] | ( | size_t | i | ) | const [inline] |
Const access to the quaternion as a vector.
Definition at line 221 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q.
void cml::quaternion< Element, ArrayType, Order, Cross >::random | ( | value_type | min, | |
value_type | max | |||
) | [inline] |
Fill quaternion with random elements.
Definition at line 230 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, and cml::random_real().
value_type cml::quaternion< Element, ArrayType, Order, Cross >::real | ( | ) | const [inline] |
Return the scalar part.
Definition at line 129 of file quaternion.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::m_q, and cml::quaternion< Element, ArrayType, Order, Cross >::W.
Referenced by cml::quaternion< Element, ArrayType, Order, Cross >::log(), and cml::real().
vector_type cml::quaternion< Element, ArrayType, Order, Cross >::m_q [protected] |
Definition at line 518 of file quaternion.h.
Referenced by cml::quaternion< Element, ArrayType, Order, Cross >::as_vector(), cml::quaternion< Element, ArrayType, Order, Cross >::assign(), cml::quaternion< Element, ArrayType, Order, Cross >::data(), cml::quaternion< Element, ArrayType, Order, Cross >::identity(), cml::quaternion< Element, ArrayType, Order, Cross >::imaginary(), cml::quaternion< Element, ArrayType, Order, Cross >::operator[](), cml::quaternion< Element, ArrayType, Order, Cross >::quaternion(), cml::quaternion< Element, ArrayType, Order, Cross >::random(), and cml::quaternion< Element, ArrayType, Order, Cross >::real().