IMP
2.4.0
The Integrative Modeling Platform
|
3D rotation class. More...
#include <IMP/algebra/Rotation3D.h>
3D rotation class.
Rotations are currently represented using quaternions and a cached copy of the rotation matrix. The quaternion allows for fast and stable composition and the cached rotation matrix means that rotations are performed quickly. See http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation for a comparison of different implementations of rotations.
Currently the rotation can be initialized from either:
See geometric primitives for more information.
Definition at line 46 of file Rotation3D.h.
Public Member Functions | |
Rotation3D (const VectorD< 4 > &v, bool assume_normalized=false) | |
Rotation3D () | |
Create an invalid rotation. More... | |
Rotation3D (double a, double b, double c, double d) | |
Create a rotation from a quaternion. More... | |
const Vector3D | get_derivative (const Vector3D &o, unsigned int i) const |
Return the derivative of the local position o with respect to the i'th internal quaternion coefficient, for i in [0..3], namely (dx/dQi, dy/dQi, dz/dQi) More... | |
Rotation3D | get_inverse () const |
Return the rotation which undoes this rotation. More... | |
bool | get_is_valid () const |
const Vector4D & | get_quaternion () const |
Return the quaternion so that it can be stored. More... | |
Vector3D | get_rotated (const Vector3D &o) const |
Rotate a vector around the origin. More... | |
double | get_rotated_one_coordinate (const Vector3D &o, unsigned int coord) const |
Gets only the requested rotation coordinate of the vector. More... | |
Vector3D | get_rotation_matrix_row (int i) const |
Vector3D | operator* (const Vector3D &v) const |
Rotate a vector around the origin. More... | |
Rotation3D | operator* (const Rotation3D &q) const |
multiply two rotations More... | |
Rotation3D | operator/ (const Rotation3D &r) const |
Compute the rotation which when composed with r gives this. More... | |
const Rotation3D & | operator/= (const Rotation3D &r) |
void | show (std::ostream &out=std::cout) const |
Friends | |
Rotation3D | compose (const Rotation3D &a, const Rotation3D &b) |
|
explicit |
Create a rotation from a vector of 4 quaternion coefficients.
Definition at line 80 of file Rotation3D.h.
IMP::algebra::Rotation3D::Rotation3D | ( | ) |
Create an invalid rotation.
Definition at line 86 of file Rotation3D.h.
IMP::algebra::Rotation3D::Rotation3D | ( | double | a, |
double | b, | ||
double | c, | ||
double | d | ||
) |
Create a rotation from a quaternion.
base::ValueException | if the rotation is not a unit vector. |
Definition at line 90 of file Rotation3D.h.
const Vector3D IMP::algebra::Rotation3D::get_derivative | ( | const Vector3D & | o, |
unsigned int | i | ||
) | const |
Return the derivative of the local position o with respect to the i'th internal quaternion coefficient, for i in [0..3], namely (dx/dQi, dy/dQi, dz/dQi)
Rotation3D IMP::algebra::Rotation3D::get_inverse | ( | ) | const |
Return the rotation which undoes this rotation.
Definition at line 181 of file Rotation3D.h.
bool IMP::algebra::Rotation3D::get_is_valid | ( | ) | const |
returns true is the rotation is valid, false if invalid or not initialized (e.g., only initialized by the empty constructor)
Definition at line 227 of file Rotation3D.h.
const Vector4D& IMP::algebra::Rotation3D::get_quaternion | ( | ) | const |
Return the quaternion so that it can be stored.
Note that there is no guarantee on which of the two equivalent quaternions is returned.
Definition at line 192 of file Rotation3D.h.
Rotate a vector around the origin.
Definition at line 154 of file Rotation3D.h.
double IMP::algebra::Rotation3D::get_rotated_one_coordinate | ( | const Vector3D & | o, |
unsigned int | coord | ||
) | const |
Gets only the requested rotation coordinate of the vector.
Definition at line 162 of file Rotation3D.h.
Rotate a vector around the origin.
Definition at line 171 of file Rotation3D.h.
Rotation3D IMP::algebra::Rotation3D::operator* | ( | const Rotation3D & | q | ) | const |
multiply two rotations
Definition at line 199 of file Rotation3D.h.
Rotation3D IMP::algebra::Rotation3D::operator/ | ( | const Rotation3D & | r | ) | const |
Compute the rotation which when composed with r gives this.
Definition at line 206 of file Rotation3D.h.
|
friend |
Definition at line 356 of file Rotation3D.h.