cgv
|
implements a quaternion. More...
#include <quaternion.h>
Public Types | |
enum | AxisEnum { X_AXIS , Y_AXIS , Z_AXIS } |
enumeration of the three coordinate axes More... | |
typedef fvec< T, 4 > | base_type |
base class type | |
typedef T | coord_type |
coordinate type | |
typedef fvec< T, 3 > | vec_type |
type of 3d axis | |
typedef fmat< T, 3, 3 > | mat_type |
type of 3x3 matrix | |
typedef fmat< T, 4, 4 > | hmat_type |
type of 4x4 matrix | |
![]() | |
enum | |
compile-time constant indicating the dimensionality of the vector More... | |
typedef T | value_type |
typedef T & | reference |
typedef const T & | const_reference |
typedef std::size_t | size_type |
typedef std::ptrdiff_t | difference_type |
typedef T * | pointer |
typedef const T * | const_pointer |
typedef T * | iterator |
typedef const T * | const_iterator |
typedef std::reverse_iterator< iterator > | reverse_iterator |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
Public Member Functions | |
quaternion (const quaternion< T > &quat) | |
copy constructor | |
template<typename S > | |
quaternion (const quaternion< S > &q) | |
copy constructor with type conversion | |
quaternion< T > & | operator= (const quaternion< T > &quat) |
assignement operator | |
quaternion (AxisEnum axis, coord_type angle) | |
construct quaternion from coordinate axis and rotation angle | |
quaternion (const vec_type &axis, coord_type angle) | |
construct quaternion from axis and rotation angle | |
template<class rot_mat_type > | |
quaternion (const rot_mat_type &matrix) | |
construct quaternion from 3x3 rotation or rotational part of homogeneous 3x4 / 4x4 matrix | |
quaternion (coord_type w, coord_type x, coord_type y, coord_type z) | |
construct quaternion directly | |
quaternion (coord_type re, const vec_type &im) | |
construct quaternion from real part and vector | |
base_type & | vec () |
const base_type & | vec () const |
void | set (AxisEnum axis, coord_type angle) |
set quaternion from coordinate axis and rotation angle | |
void | set (const vec_type &axis, coord_type angle) |
set quaternion from axis and rotation angle | |
void | set (const quaternion< T > &quat) |
setter from quaternion | |
template<class rot_mat_type > | |
void | set (const rot_mat_type &M) |
set quaternion from 3x3 rotation or rotational part of homogeneous 3x4 / 4x4 matrix | |
void | set (coord_type re, coord_type ix, coord_type iy, coord_type iz) |
set quaternion directly | |
void | set (coord_type re, const vec_type &im) |
set quaternion from real part and vector | |
void | put_matrix (mat_type &M) const |
compute equivalent 3x3 rotation matrix | |
mat_type | get_matrix () const |
return equivalent 3x3 rotation matrix | |
void | put_homogeneous_matrix (hmat_type &M) const |
compute equivalent homogeneous 4x4 rotation matrix | |
hmat_type | get_homogeneous_matrix () const |
return equivalent 4x4 rotation matrix | |
void | set_normal (const vec_type &n) |
initialize quaternion from normal vector | |
void | put_normal (coord_type *n) |
extract normal vector | |
void | put_image (const vec_type &preimage, vec_type &image) const |
rotate preimage according to quaternion into image | |
void | rotate (vec_type &v) const |
rotate vector according to quaternion | |
vec_type | get_rotated (const vec_type &v) const |
return rotated vector | |
void | rotate (mat_type &m) const |
Rotate a frame according to quaternion. | |
mat_type | get_rotated (const mat_type &M) const |
Rotate source frame s into destination frame d. | |
void | put_preimage (const vec_type &image, vec_type &preimage) const |
rotate image according to quaternion into preimage | |
void | inverse_rotate (vec_type &image) const |
rotate vector according to the inverse quaternion | |
vec_type | apply (const vec_type &v) const |
rotate vector according to quaternion | |
quaternion< T > | conj () const |
return the conjugate | |
quaternion< T > | negated () const |
return the negated quaternion | |
void | negate () |
negate the quaternion | |
void | conjugate () |
compute conjugate | |
quaternion< T > | inverse () const |
return the inverse | |
void | invert () |
compute inverse | |
void | affin (const quaternion< T > &p, coord_type t, const quaternion< T > &q) |
compute affin combination with angular interpolation | |
void | affin (coord_type s, const quaternion< T > &q) |
compute affin combination with angular interpolation | |
quaternion< T > | operator- () const |
negation operator | |
quaternion< T > & | operator*= (const quaternion< T > &q) |
field multiplication | |
quaternion< T > | operator* (const quaternion< T > &q) const |
field multiplication | |
quaternion< T > & | operator*= (const T &s) |
in place multiplication with s | |
quaternion< T > | operator* (const T &s) const |
multiplication with scalar s | |
coord_type | re () const |
return real part | |
coord_type & | re () |
return reference to real part | |
void | put_im (vec_type &vector) const |
put imaginary part | |
vec_type | im () const |
return this as vector | |
coord_type | put_axis (vec_type &v) const |
put rotation axis and return rotation angle | |
quaternion< T > | exp () const |
exponential map | |
quaternion< T > | log () const |
logarithmic map | |
![]() | |
iterator | begin () |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
reverse_iterator | rbegin () |
const_reverse_iterator | rbegin () const |
reverse_iterator | rend () |
const_reverse_iterator | rend () const |
reverse iterator pointing to the end of reverse iteration | |
fvec () | |
creates a vector not initialized | |
fvec (const T &a) | |
creates a vector, where all N components are initialized to the constant value a | |
fvec (const T &x, const T &y) | |
construct and init first two coordinates to the given values | |
fvec (const T &x, const T &y, const T &z) | |
construct and init first three coordinates to the given values | |
fvec (const T &x, const T &y, const T &z, const T &w) | |
construct and init first four coordinates to the given values | |
fvec (cgv::type::uint32_type n, const T *a) | |
creates a vector from a n-element array a, if n < N remaining N-n elements are set to zero | |
fvec (cgv::type::uint32_type n, const S *a) | |
creates a column vector initialized to array of a different type with zeros filled to not copied components | |
fvec (const fvec< T, N > &rhs) | |
copy constructor | |
fvec (const fvec< S, N > &fv) | |
copies a column vector of a different type | |
fvec (const fvec< S1, N - 1 > &fv, S2 w) | |
construct from vector of one dimension less plus a scalar | |
fvec (const fvec< S, N+1 > &fv) | |
construct from vector of one dimension higher by cutting of the highest dimension | |
fvec (const std::array< T, N > &arr) | |
construct from std::array of same size | |
fvec & | operator= (const fvec< T, N > &rhs) |
assign vector rhs, if vector and rhs have different sizes, vector has been resized to match the size of | |
fvec & | operator= (const T &a) |
set all components of vector to constant value a | |
void | assign (const std::array< T, N > &arr) |
set to the contents of the given std::array with same size | |
void | set (const T &x, const T &y) |
set the first two components | |
void | set (const T &x, const T &y, const T &z) |
set the first three components | |
void | set (const T &x, const T &y, const T &z, const T &w) |
set the first four components | |
void | fill (const T &a) |
fill elements of vector with scalar v | |
void | zeros () |
fill the vector with zeros | |
void | zerosh () |
fill the vector with zeros except for the last component, which will be set to one | |
void | ones () |
fill the vector with ones | |
fvec< T, N+1 > | lift () const |
convert to homogeneous version by adding a 1 | |
vec< T > | to_vec () const |
conversion to vector type | |
T & | x () |
first element | |
const T & | x () const |
first element of const vector | |
T & | y () |
second element | |
const T & | y () const |
second element of const vector | |
T & | z () |
third element | |
const T & | z () const |
third element of const vector | |
T & | w () |
fourth element | |
const T & | w () const |
fourth element of const vector | |
T & | operator() (const int i) |
access i'th element | |
const T & | operator() (const int i) const |
access i'th element of const vector | |
T & | operator[] (const int i) |
access i'th element | |
const T & | operator[] (const int i) const |
access i'th element of const vector | |
T * | data () |
cast into array. This allows calls like glVertex<N><T>v(p.data()) instead of glVertex<N><T,N>(p.x(),p.y(),....) | |
const T * | data () const |
cast into const array | |
fvec< T, N > & | operator+= (const T &s) |
in place addition of a scalar s | |
fvec< T, N > & | operator+= (const fvec< S, N > &_v) |
in place vector addition | |
fvec< T, N > & | operator-= (const T &s) |
in place subtraction by scalar s | |
fvec< T, N > & | operator-= (const fvec< S, N > &_v) |
in place vector subtraction | |
fvec< T, N > & | operator*= (const T &s) |
in place multiplication with s | |
fvec< T, N > & | operator*= (const fvec< S, N > &_v) |
in place componentwise vector multiplication | |
fvec< T, N > & | operator/= (const T &s) |
in place division by scalar s | |
fvec< T, N > & | operator/= (const fvec< S, N > &_v) |
in place componentwise vector division | |
fvec< T, N > | operator+ (const fvec< S, N > &v) const |
vector addition | |
fvec< T, N > | operator+ (const T &s) const |
componentwise addition of scalar | |
fvec< T, N > | operator- (const T &s) const |
componentwise subtraction of scalar | |
fvec< T, N > | operator- (const fvec< S, N > &v) const |
vector subtraction | |
fvec< T, N > | operator- (void) const |
negates the vector | |
fvec< T, N > | operator* (const fvec< S, N > &v) const |
componentwise vector multiplication | |
fvec< T, N > | operator* (const T &s) const |
multiplication with scalar s | |
fvec< T, N > | operator/ (const fvec< S, N > &v) const |
componentwise vector division | |
fvec< T, N > | operator/ (const T &s) const |
divides vector by scalar s | |
bool | operator== (const fvec< S, N > &v) const |
test for equality | |
bool | operator!= (const fvec< S, N > &v) const |
test for inequality | |
T | length () const |
length of the vector L2-Norm | |
void | sign () |
componentwise sign values | |
void | step (const fvec< T, N > &r) |
componentwise sign values | |
void | abs () |
componentwise absolute values | |
void | ceil () |
ceil componentwise | |
void | floor () |
floor componentwise | |
void | round () |
round componentwise | |
T | sqr_length () const |
square length of vector | |
T | normalize () |
normalize the vector using the L2-Norm and return the length | |
T | safe_normalize () |
normalize the vector if length is not zero using the L2-Norm and return the length | |
Additional Inherited Members | |
![]() | |
static fvec< T, N > | zeroh () |
creates a homogeneous zero-vector (yields same result as calling fvec<T,N-1>(0).lift() but is faster) | |
static fvec< T, N > | from_vec (const vec< T > &) |
conversion from vector | |
static cgv::type::uint32_type | size () |
return number of elements | |
![]() | |
T | v [N] |
implements a quaternion.
Definition at line 20 of file quaternion.h.
typedef fvec<T,4> cgv::math::quaternion< T >::base_type |
base class type
Definition at line 26 of file quaternion.h.
typedef T cgv::math::quaternion< T >::coord_type |
coordinate type
Definition at line 28 of file quaternion.h.
typedef fmat<T, 4, 4> cgv::math::quaternion< T >::hmat_type |
type of 4x4 matrix
Definition at line 36 of file quaternion.h.
typedef fmat<T, 3, 3> cgv::math::quaternion< T >::mat_type |
type of 3x3 matrix
Definition at line 34 of file quaternion.h.
typedef fvec<T,3> cgv::math::quaternion< T >::vec_type |
type of 3d axis
Definition at line 32 of file quaternion.h.
enum cgv::math::quaternion::AxisEnum |
enumeration of the three coordinate axes
Definition at line 30 of file quaternion.h.
|
inline |
standard constructor initializes to unit quaternion
Definition at line 42 of file quaternion.h.
|
inline |
copy constructor
Definition at line 44 of file quaternion.h.
|
inline |
copy constructor with type conversion
Definition at line 47 of file quaternion.h.
|
inline |
construct quaternion from coordinate axis and rotation angle
Definition at line 54 of file quaternion.h.
References cgv::math::quaternion< T >::set().
|
inline |
construct quaternion from axis and rotation angle
Definition at line 56 of file quaternion.h.
References cgv::math::quaternion< T >::set().
|
inline |
construct quaternion from 3x3 rotation or rotational part of homogeneous 3x4 / 4x4 matrix
Definition at line 59 of file quaternion.h.
References cgv::math::quaternion< T >::set().
|
inline |
construct quaternion directly
Definition at line 61 of file quaternion.h.
References cgv::math::quaternion< T >::set(), cgv::math::fvec< T, 4 >::w(), cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
|
inline |
construct quaternion from real part and vector
Definition at line 63 of file quaternion.h.
References cgv::math::quaternion< T >::im(), cgv::math::quaternion< T >::re(), and cgv::math::quaternion< T >::set().
|
inline |
compute affin combination with angular interpolation
Definition at line 244 of file quaternion.h.
References cgv::math::quaternion< T >::set(), cgv::math::fvec< T, 4 >::sqr_length(), cgv::math::fvec< T, N >::w(), cgv::math::fvec< T, N >::x(), cgv::math::fvec< T, N >::y(), and cgv::math::fvec< T, N >::z().
Referenced by cgv::math::quaternion< T >::affin().
|
inline |
compute affin combination with angular interpolation
Definition at line 270 of file quaternion.h.
References cgv::math::quaternion< T >::affin().
|
inline |
rotate vector according to quaternion
Definition at line 219 of file quaternion.h.
References cgv::math::quaternion< T >::put_image().
Referenced by cgv::plot::plot_base::get_axis_direction(), cgv::math::rigid_transform< T >::get_transformed_point(), and cgv::math::rigid_transform< T >::get_transformed_vector().
|
inline |
return the conjugate
Definition at line 224 of file quaternion.h.
References cgv::math::quaternion< T >::im(), and cgv::math::quaternion< T >::re().
|
inline |
compute conjugate
Definition at line 230 of file quaternion.h.
References cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
Referenced by cgv::math::quaternion< T >::invert(), and cgv::math::quaternion< T >::negate().
|
inline |
exponential map
Definition at line 330 of file quaternion.h.
References cgv::math::quaternion< T >::exp(), cgv::math::quaternion< T >::im(), cgv::math::fvec< T, N >::length(), and cgv::math::quaternion< T >::re().
Referenced by cgv::math::quaternion< T >::exp().
|
inline |
return equivalent 4x4 rotation matrix
Definition at line 169 of file quaternion.h.
References cgv::math::quaternion< T >::put_homogeneous_matrix().
Referenced by cgv::app::gizmo::finish_frame().
|
inline |
return equivalent 3x3 rotation matrix
Definition at line 152 of file quaternion.h.
References cgv::math::quaternion< T >::put_matrix().
|
inline |
Rotate source frame s into destination frame d.
Definition at line 209 of file quaternion.h.
References cgv::math::quaternion< T >::rotate().
|
inline |
return rotated vector
Definition at line 200 of file quaternion.h.
References cgv::math::quaternion< T >::put_image().
Referenced by cgv::math::pose_transform_point(), and cgv::math::quaternion< T >::rotate().
|
inline |
return this as vector
Definition at line 307 of file quaternion.h.
References cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
Referenced by cgv::math::quaternion< T >::conj(), cgv::math::quaternion< T >::exp(), cgv::math::quaternion< T >::log(), cgv::math::quaternion< T >::negated(), cgv::math::quaternion< T >::put_axis(), cgv::math::quaternion< T >::put_image(), cgv::math::quaternion< T >::put_preimage(), cgv::math::quaternion< T >::quaternion(), and cgv::math::quaternion< T >::set().
|
inline |
return the inverse
Definition at line 232 of file quaternion.h.
References cgv::math::quaternion< T >::invert().
Referenced by cgv::math::rigid_transform< T >::inverse().
|
inline |
rotate vector according to the inverse quaternion
Definition at line 217 of file quaternion.h.
References cgv::math::quaternion< T >::put_preimage().
Referenced by cgv::app::gizmo::handle().
|
inline |
compute inverse
Definition at line 234 of file quaternion.h.
References cgv::math::quaternion< T >::conjugate(), cgv::math::fvec< T, 4 >::operator*=(), cgv::math::fvec< T, 4 >::operator/=(), and cgv::math::fvec< T, 4 >::sqr_length().
Referenced by cgv::math::quaternion< T >::inverse().
|
inline |
logarithmic map
Definition at line 338 of file quaternion.h.
References cgv::math::quaternion< T >::im(), cgv::math::fvec< T, N >::length(), cgv::math::fvec< T, 4 >::length(), cgv::math::quaternion< T >::log(), and cgv::math::quaternion< T >::re().
Referenced by cgv::math::quaternion< T >::log().
|
inline |
negate the quaternion
Definition at line 228 of file quaternion.h.
References cgv::math::quaternion< T >::conjugate(), and cgv::math::quaternion< T >::re().
|
inline |
return the negated quaternion
Definition at line 226 of file quaternion.h.
References cgv::math::quaternion< T >::im(), and cgv::math::quaternion< T >::re().
Referenced by cgv::math::quaternion< T >::operator-().
|
inline |
field multiplication
Definition at line 292 of file quaternion.h.
|
inline |
multiplication with scalar s
Definition at line 296 of file quaternion.h.
|
inline |
field multiplication
Definition at line 274 of file quaternion.h.
References cgv::math::quaternion< T >::set(), cgv::math::fvec< T, N >::w(), cgv::math::fvec< T, 4 >::w(), cgv::math::fvec< T, N >::x(), cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, N >::y(), cgv::math::fvec< T, 4 >::y(), cgv::math::fvec< T, N >::z(), and cgv::math::fvec< T, 4 >::z().
|
inline |
in place multiplication with s
Definition at line 294 of file quaternion.h.
|
inline |
negation operator
Definition at line 272 of file quaternion.h.
References cgv::math::quaternion< T >::negated().
|
inline |
assignement operator
Definition at line 49 of file quaternion.h.
References cgv::math::fvec< T, 4 >::operator=().
|
inline |
put rotation axis and return rotation angle
Definition at line 309 of file quaternion.h.
References cgv::math::quaternion< T >::im(), cgv::math::fvec< T, N >::normalize(), cgv::math::quaternion< T >::put_axis(), and cgv::math::quaternion< T >::re().
Referenced by cgv::math::quaternion< T >::put_axis().
|
inline |
compute equivalent homogeneous 4x4 rotation matrix
Definition at line 154 of file quaternion.h.
References cgv::math::fvec< T, 4 >::w(), cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
Referenced by cgv::plot::plot3d::draw(), vr_test::draw(), cgv::math::quaternion< T >::get_homogeneous_matrix(), and cgv::math::random::uniform_orientation().
|
inline |
put imaginary part
Definition at line 305 of file quaternion.h.
References cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, N >::x(), cgv::math::fvec< T, N >::y(), cgv::math::fvec< T, 4 >::y(), cgv::math::fvec< T, 4 >::z(), and cgv::math::fvec< T, N >::z().
|
inline |
rotate preimage according to quaternion into image
Definition at line 192 of file quaternion.h.
References cgv::math::quaternion< T >::im(), and cgv::math::quaternion< T >::re().
Referenced by cgv::math::quaternion< T >::apply(), cgv::math::quaternion< T >::get_rotated(), and cgv::math::quaternion< T >::rotate().
|
inline |
compute equivalent 3x3 rotation matrix
Definition at line 139 of file quaternion.h.
References cgv::math::fvec< T, 4 >::w(), cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
Referenced by vr_emulated_kit::construct_pos_matrix(), cgv::math::rigid_transform< T >::get_hmat(), cgv::math::quaternion< T >::get_matrix(), cgv::math::rigid_transform< T >::get_transposed_hmat(), cgv::math::pose_construct(), vr_emulated_kit::query_state_impl(), cgv::gui::vr_calibration::read_calibration(), and cgv::math::random::uniform_orientation().
|
inline |
extract normal vector
Definition at line 185 of file quaternion.h.
References cgv::math::fvec< T, 4 >::w(), cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
|
inline |
rotate image according to quaternion into preimage
Definition at line 211 of file quaternion.h.
References cgv::math::quaternion< T >::im(), and cgv::math::quaternion< T >::re().
Referenced by cgv::math::quaternion< T >::inverse_rotate().
|
inline |
return reference to real part
Definition at line 303 of file quaternion.h.
References cgv::math::fvec< T, 4 >::w().
|
inline |
return real part
Definition at line 301 of file quaternion.h.
References cgv::math::fvec< T, 4 >::w().
Referenced by cgv::math::quaternion< T >::conj(), cgv::math::quaternion< T >::exp(), cgv::math::quaternion< T >::log(), cgv::math::quaternion< T >::negate(), cgv::math::quaternion< T >::negated(), cgv::math::quaternion< T >::put_axis(), cgv::math::quaternion< T >::put_image(), cgv::math::quaternion< T >::put_preimage(), cgv::math::quaternion< T >::quaternion(), cgv::math::quaternion< T >::set(), and cgv::math::quaternion< T >::set().
|
inline |
Rotate a frame according to quaternion.
Definition at line 202 of file quaternion.h.
References cgv::math::fmat< T, N, M >::col(), cgv::math::quaternion< T >::get_rotated(), and cgv::math::fmat< T, N, M >::set_col().
|
inline |
rotate vector according to quaternion
Definition at line 198 of file quaternion.h.
References cgv::math::quaternion< T >::put_image().
Referenced by cgv::math::quaternion< T >::get_rotated(), cgv::math::rigid_transform< T >::transform_point(), and cgv::math::rigid_transform< T >::transform_vector().
|
inline |
set quaternion from coordinate axis and rotation angle
Definition at line 70 of file quaternion.h.
References cgv::math::quaternion< T >::set().
Referenced by cgv::math::quaternion< T >::affin(), cgv::math::quaternion< T >::operator*=(), cgv::math::quaternion< T >::quaternion(), cgv::math::quaternion< T >::quaternion(), cgv::math::quaternion< T >::quaternion(), cgv::math::quaternion< T >::quaternion(), cgv::math::quaternion< T >::quaternion(), cgv::math::quaternion< T >::set(), cgv::math::quaternion< T >::set(), cgv::math::quaternion< T >::set(), cgv::math::quaternion< T >::set_normal(), and cgv::math::random::uniform_quat_orientation().
|
inline |
setter from quaternion
Definition at line 83 of file quaternion.h.
|
inline |
set quaternion from 3x3 rotation or rotational part of homogeneous 3x4 / 4x4 matrix
Definition at line 86 of file quaternion.h.
References cgv::math::fvec< T, 4 >::w(), cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
|
inline |
set quaternion from axis and rotation angle
Definition at line 77 of file quaternion.h.
References cgv::math::quaternion< T >::set().
|
inline |
set quaternion from real part and vector
Definition at line 131 of file quaternion.h.
References cgv::math::quaternion< T >::im(), cgv::math::quaternion< T >::re(), cgv::math::quaternion< T >::set(), cgv::math::fvec< T, N >::x(), cgv::math::fvec< T, N >::y(), and cgv::math::fvec< T, N >::z().
|
inline |
set quaternion directly
Definition at line 123 of file quaternion.h.
References cgv::math::quaternion< T >::re(), cgv::math::fvec< T, 4 >::w(), cgv::math::fvec< T, 4 >::x(), cgv::math::fvec< T, 4 >::y(), and cgv::math::fvec< T, 4 >::z().
|
inline |
initialize quaternion from normal vector
Definition at line 171 of file quaternion.h.
References cgv::math::quaternion< T >::set(), cgv::math::fvec< T, N >::x(), cgv::math::fvec< T, N >::y(), and cgv::math::fvec< T, N >::z().
|
inline |
Definition at line 64 of file quaternion.h.
|
inline |
Definition at line 65 of file quaternion.h.