[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
|
Quaternion< ValueType > Class Template Reference | ![]() |
#include <vigra/quaternion.hxx>
Public Types | |
| typedef ValueType const & | const_reference |
| typedef NormTraits< ValueType > ::NormType | NormType |
| typedef ValueType & | reference |
| typedef NormTraits< ValueType > ::SquaredNormType | SquaredNormType |
| typedef ValueType | value_type |
Public Member Functions | |
| template<class MatrixType > | |
| void | fillRotationMatrix (MatrixType &matrix) const |
| NormType | magnitude () const |
| bool | operator!= (Quaternion const &other) const |
| Quaternion & | operator*= (Quaternion const &other) |
| Quaternion & | operator*= (double scale) |
| Quaternion | operator+ () const |
| Quaternion & | operator+= (value_type const &w) |
| Quaternion & | operator+= (Quaternion const &other) |
| Quaternion | operator- () const |
| Quaternion & | operator-= (value_type const &w) |
| Quaternion & | operator-= (Quaternion const &other) |
| Quaternion & | operator/= (Quaternion const &other) |
| Quaternion & | operator/= (double scale) |
| Quaternion & | operator= (Quaternion const &other) |
| Quaternion & | operator= (ValueType w) |
| bool | operator== (Quaternion const &other) const |
| value_type & | operator[] (int index) |
| value_type | operator[] (int index) const |
| Quaternion (ValueType w=0, ValueType x=0, ValueType y=0, ValueType z=0) | |
| Quaternion (ValueType w, const Vector &v) | |
| Quaternion (const Quaternion &q) | |
| void | setV (const Vector &v) |
| void | setV (ValueType x, ValueType y, ValueType z) |
| void | setW (ValueType w) |
| SquaredNormType | squaredMagnitude () const |
| const Vector & | v () const |
| Vector & | v () |
| ValueType | w () const |
| ValueType & | w () |
Static Public Member Functions | |
| static Quaternion | createRotation (double angle, const Vector &rotationAxis) |
Quaternion class.
Quaternions are mainly used as a compact representation for 3D rotations because they are much less prone to round-off errors than rotation matrices, especially when many rotations are concatenated. In addition, the angle/axis interpretation of normalized quaternions is very intuitive. Read the Wikipedia entry on quaternions for more information on the mathematics.
See also: Quaternion Operations
| typedef ValueType value_type |
the quaternion's valuetype
| typedef ValueType& reference |
reference (return of operator[]).
| typedef ValueType const& const_reference |
const reference (return of operator[] const).
| typedef NormTraits<ValueType>::SquaredNormType SquaredNormType |
the quaternion's squared norm type
| Quaternion | ( | ValueType | w = 0, |
| ValueType | x = 0, |
||
| ValueType | y = 0, |
||
| ValueType | z = 0 |
||
| ) |
Construct a quaternion with explicit values for the real and imaginary parts.
| Quaternion | ( | ValueType | w, |
| const Vector & | v | ||
| ) |
Construct a quaternion with real value and imaginary vector.
Equivalent to Quaternion(w, v[0], v[1], v[2]).
| Quaternion | ( | const Quaternion< ValueType > & | q | ) |
Copy constructor.
| Quaternion& operator= | ( | Quaternion< ValueType > const & | other | ) |
Copy assignment.
| Quaternion& operator= | ( | ValueType | w | ) |
Assign w to the real part and set the imaginary part to zero.
|
static |
Creates a Quaternion which represents the operation of rotating around the given axis by the given angle.
The angle should be in the range -pi..3*pi for sensible results.
| ValueType w | ( | ) | const |
Read real part.
| ValueType& w | ( | ) |
Access real part.
| void setW | ( | ValueType | w | ) |
Set real part.
| const Vector& v | ( | ) | const |
Read imaginary part.
| Vector& v | ( | ) |
Access imaginary part.
| void setV | ( | const Vector & | v | ) |
Set imaginary part.
| void setV | ( | ValueType | x, |
| ValueType | y, | ||
| ValueType | z | ||
| ) |
Set imaginary part.
| value_type& operator[] | ( | int | index | ) |
Access entry at index (0 <=> w(), 1 <=> v[0] etc.).
| value_type operator[] | ( | int | index | ) | const |
Read entry at index (0 <=> w(), 1 <=> v[0] etc.).
| NormType magnitude | ( | ) | const |
Magnitude.
| SquaredNormType squaredMagnitude | ( | ) | const |
Squared magnitude.
| Quaternion& operator+= | ( | value_type const & | w | ) |
Add w to the real part.
If the quaternion represents a rotation, the rotation angle is increased by w.
| Quaternion& operator+= | ( | Quaternion< ValueType > const & | other | ) |
Add assigment.
| Quaternion& operator-= | ( | value_type const & | w | ) |
Subtract w from the real part.
If the quaternion represents a rotation, the rotation angle is decreased by w.
| Quaternion& operator-= | ( | Quaternion< ValueType > const & | other | ) |
Subtract assigment.
| Quaternion operator+ | ( | ) | const |
Addition.
| Quaternion operator- | ( | ) | const |
Subtraction.
| Quaternion& operator*= | ( | Quaternion< ValueType > const & | other | ) |
Multiply assignment.
If the quaternions represent rotations, the rotations of this and other are concatenated.
| Quaternion& operator*= | ( | double | scale | ) |
Multiply all entries with the scalar scale.
| Quaternion& operator/= | ( | Quaternion< ValueType > const & | other | ) |
Divide assignment.
| Quaternion& operator/= | ( | double | scale | ) |
Devide all entries by the scalar scale.
| bool operator== | ( | Quaternion< ValueType > const & | other | ) | const |
Equal.
| bool operator!= | ( | Quaternion< ValueType > const & | other | ) | const |
Not equal.
| void fillRotationMatrix | ( | MatrixType & | matrix | ) | const |
Fill the first 3x3 elements of the given matrix with a rotation matrix performing the same 3D rotation as this quaternion. If matrix is in column-major format, it should be pre-multiplied with the vectors to be rotated, i.e. matrix[0][0-3] will be the rotated X axis.
|
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |
html generated using doxygen and Python
|