ITK
4.6.0
Insight Segmentation and Registration Toolkit
|
#include <itkVersor.h>
A templated class holding a unit quaternion.
Versor is a templated class that holds a unit quaternion. The difference between versors and quaternions is that quaternions can represent rotations and scale changes while versors are limited to rotations.
This class only implements the operations that maintain versors as a group, that is, any operations between versors result in another versor. For this reason, addition is not defined in this class, even though it is a valid operation between quaternions.
Definition at line 50 of file itkVersor.h.
Public Types | |
typedef CovariantVector< T, 3 > | CovariantVectorType |
typedef Matrix< T, 3, 3 > | MatrixType |
typedef Point< T, 3 > | PointType |
typedef NumericTraits < ValueType >::RealType | RealType |
typedef Versor | Self |
typedef T | ValueType |
typedef Vector< T, 3 > | VectorType |
typedef vnl_quaternion< T > | VnlQuaternionType |
typedef vnl_vector_fixed< T, 3 > | VnlVectorType |
Public Member Functions | |
Self | Exponential (ValueType exponent) const |
ValueType | GetAngle (void) const |
VectorType | GetAxis (void) const |
Self | GetConjugate (void) const |
MatrixType | GetMatrix (void) const |
Self | GetReciprocal (void) const |
VectorType | GetRight (void) const |
ValueType | GetScalar (void) const |
ValueType | GetTensor (void) const |
vnl_quaternion< T > | GetVnlQuaternion (void) const |
ValueType | GetW (void) const |
ValueType | GetX (void) const |
ValueType | GetY (void) const |
ValueType | GetZ (void) const |
void | Normalize (void) |
bool | operator!= (const Self &vec) const |
Self | operator* (const Self &vec) const |
const Self & | operator*= (const Self &v) |
Self | operator/ (const Self &vec) const |
const Self & | operator/= (const Self &v) |
const Self & | operator= (const Self &v) |
bool | operator== (const Self &vec) const |
void | Set (const VnlQuaternionType &) |
void | Set (const VectorType &axis, ValueType angle) |
void | Set (const MatrixType &m) |
void | Set (const VectorType &axis) |
void | SetIdentity () |
void | SetRotationAroundX (ValueType angle) |
void | SetRotationAroundY (ValueType angle) |
void | SetRotationAroundZ (ValueType angle) |
Self | SquareRoot (void) const |
VectorType | Transform (const VectorType &v) const |
CovariantVectorType | Transform (const CovariantVectorType &v) const |
PointType | Transform (const PointType &v) const |
VnlVectorType | Transform (const VnlVectorType &v) const |
Versor () | |
Versor (const Self &v) | |
void | Set (T x, T y, T z, T w) |
Static Private Member Functions | |
static ValueType | Epsilon (double *) |
static ValueType | Epsilon (float *) |
static ValueType | Epsilon () |
Private Attributes | |
ValueType | m_W |
ValueType | m_X |
ValueType | m_Y |
ValueType | m_Z |
typedef CovariantVector< T, 3 > itk::Versor< T >::CovariantVectorType |
CovariantVector type.
Definition at line 70 of file itkVersor.h.
typedef Matrix< T, 3, 3 > itk::Versor< T >::MatrixType |
Type of the rotation matrix equivalent to the Versor
Definition at line 79 of file itkVersor.h.
typedef Point< T, 3 > itk::Versor< T >::PointType |
Point type.
Definition at line 67 of file itkVersor.h.
typedef NumericTraits< ValueType >::RealType itk::Versor< T >::RealType |
Type used for computations on the versor components
Definition at line 61 of file itkVersor.h.
typedef Versor itk::Versor< T >::Self |
Standard class typedefs.
Definition at line 54 of file itkVersor.h.
typedef T itk::Versor< T >::ValueType |
ValueType can be used to declare a variable that is the same type as a data element held in a Versor.
Definition at line 58 of file itkVersor.h.
typedef Vector< T, 3 > itk::Versor< T >::VectorType |
Vector type used to represent the axis.
Definition at line 64 of file itkVersor.h.
typedef vnl_quaternion< T > itk::Versor< T >::VnlQuaternionType |
Vnl Quaternion type.
Definition at line 76 of file itkVersor.h.
typedef vnl_vector_fixed< T, 3 > itk::Versor< T >::VnlVectorType |
Vnl Vector type.
Definition at line 73 of file itkVersor.h.
itk::Versor< T >::Versor | ( | ) |
Default constructor creates a null versor (representing 0 degrees rotation).
itk::Versor< T >::Versor | ( | const Self & | v | ) |
Copy constructor.
|
inlinestaticprivate |
use different epsilon for float and double
Definition at line 265 of file itkVersor.h.
|
inlinestaticprivate |
use different epsilon for float and double
Definition at line 269 of file itkVersor.h.
|
inlinestaticprivate |
use different epsilon for float and double
Definition at line 273 of file itkVersor.h.
Referenced by itk::Versor< TScalar >::Epsilon().
Self itk::Versor< T >::Exponential | ( | ValueType | exponent | ) | const |
Compute the Exponential of the unit quaternion Exponentiation by a factor is equivalent to multiplication of the rotaion angle of the quaternion.
ValueType itk::Versor< T >::GetAngle | ( | void | ) | const |
Returns the rotation angle in radians.
VectorType itk::Versor< T >::GetAxis | ( | void | ) | const |
Returns the axis of the rotation. It is a unit vector parallel to the axis.
Self itk::Versor< T >::GetConjugate | ( | void | ) | const |
Get Conjugate versor. Returns the versor that produce a rotation by the same angle but in opposite direction.
MatrixType itk::Versor< T >::GetMatrix | ( | void | ) | const |
Get the matrix representation.
Self itk::Versor< T >::GetReciprocal | ( | void | ) | const |
Get Reciprocal versor. Returns the versor that composed with this one will result in a scalar operator equals to 1. It is also equivalent to 1/this.
VectorType itk::Versor< T >::GetRight | ( | void | ) | const |
Returns the Right part It is a vector part of the Versor. It is called Right because it is equivalent to a right angle rotation.
ValueType itk::Versor< T >::GetScalar | ( | void | ) | const |
Returns the Scalar part.
ValueType itk::Versor< T >::GetTensor | ( | void | ) | const |
Get Tensor part of the Versor. Given that Versors are normalized quaternions this value is expected to be 1.0 always
vnl_quaternion< T > itk::Versor< T >::GetVnlQuaternion | ( | void | ) | const |
Get a vnl_quaternion with a copy of the internal memory block.
|
inline |
Returns the W component.
Definition at line 178 of file itkVersor.h.
Referenced by itk::operator<<().
|
inline |
Returns the X component.
Definition at line 169 of file itkVersor.h.
Referenced by itk::operator<<().
|
inline |
Returns the Y component.
Definition at line 172 of file itkVersor.h.
Referenced by itk::operator<<().
|
inline |
Returns the Z component.
Definition at line 175 of file itkVersor.h.
Referenced by itk::operator<<().
void itk::Versor< T >::Normalize | ( | void | ) |
Normalize the Versor. Given that Versors are normalized quaternions this method is provided only for convinience when it is suspected that a versor could be out of the unit sphere.
bool itk::Versor< T >::operator!= | ( | const Self & | vec | ) | const |
Versor operator!= Performs the comparison between two versors. this operation uses an arbitrary threshold for the comparison.
Self itk::Versor< T >::operator* | ( | const Self & | vec | ) | const |
Versor operator*. Performs the composition of two versors. this operation is NOT commutative.
const Self& itk::Versor< T >::operator*= | ( | const Self & | v | ) |
Composition operator *=. Compose the current versor with the operand and store the result in the current versor.
Self itk::Versor< T >::operator/ | ( | const Self & | vec | ) | const |
Versor operator/. Performs the division of two versors.
const Self& itk::Versor< T >::operator/= | ( | const Self & | v | ) |
Division operator /=. Divide the current versor with the operand and store the result in the current versor. This is equivalent to compose the Versor with the reciprocal of the operand
const Self& itk::Versor< T >::operator= | ( | const Self & | v | ) |
Assignment operator =. Copy the versor argument.
bool itk::Versor< T >::operator== | ( | const Self & | vec | ) | const |
Versor operator== Performs the comparison between two versors. this operation uses an arbitrary threshold for the comparison.
void itk::Versor< T >::Set | ( | const VnlQuaternionType & | ) |
void itk::Versor< T >::Set | ( | T | x, |
T | y, | ||
T | z, | ||
T | w | ||
) |
Set the Versor from Quaternion components.
void itk::Versor< T >::Set | ( | const VectorType & | axis, |
ValueType | angle | ||
) |
Set the versor using a vector and angle the unit vector parallel to the given vector will be used. The angle is expected in radians.
void itk::Versor< T >::Set | ( | const MatrixType & | m | ) |
Set the versor using an orthogonal matrix. Based on code from: http://www.euclideanspace.com/maths/geometry/rotations/ conversions/matrixToQuaternion/index.htm
void itk::Versor< T >::Set | ( | const VectorType & | axis | ) |
Set the versor using the right part. the magnitude of the vector given is assumed to be equal to std::sin(angle/2). This method will compute internally the scalar part that preserve the Versor as a unit quaternion.
void itk::Versor< T >::SetIdentity | ( | ) |
Reset the values so the versor is equivalent to an identity transformation. This is equivalent to set a zero angle
void itk::Versor< T >::SetRotationAroundX | ( | ValueType | angle | ) |
Sets a rotation around the X axis using the parameter as angle in radians. This is a method provided for convinience to initialize a rotation. The effect of this methods is not cumulative with any value previously stored in the Versor.
void itk::Versor< T >::SetRotationAroundY | ( | ValueType | angle | ) |
Sets a rotation around the Y axis using the parameter as angle in radians. This is a method provided for convinience to initialize a rotation. The effect of this methods is not cumulative with any value previously stored in the Versor.
void itk::Versor< T >::SetRotationAroundZ | ( | ValueType | angle | ) |
Sets a rotation around the Y axis using the parameter as angle in radians. This is a method provided for convinience to initialize a rotation. The effect of this methods is not cumulative with any value previously stored in the Versor.
Self itk::Versor< T >::SquareRoot | ( | void | ) | const |
Get the Square root of the unit quaternion.
VectorType itk::Versor< T >::Transform | ( | const VectorType & | v | ) | const |
Transform a vector.
CovariantVectorType itk::Versor< T >::Transform | ( | const CovariantVectorType & | v | ) | const |
Transform a covariant vector.
PointType itk::Versor< T >::Transform | ( | const PointType & | v | ) | const |
Transform a point.
VnlVectorType itk::Versor< T >::Transform | ( | const VnlVectorType & | v | ) | const |
Transform a vnl_vector.
|
private |
Escalar component of the Versor.
Definition at line 289 of file itkVersor.h.
Referenced by itk::Versor< TScalar >::GetW().
|
private |
Component parallel to x axis.
Definition at line 280 of file itkVersor.h.
Referenced by itk::Versor< TScalar >::GetX().
|
private |
Component parallel to y axis.
Definition at line 283 of file itkVersor.h.
Referenced by itk::Versor< TScalar >::GetY().
|
private |
Component parallel to z axis.
Definition at line 286 of file itkVersor.h.
Referenced by itk::Versor< TScalar >::GetZ().