 IMP Reference Guide  2.5.0 The Integrative Modeling Platform
IMP::algebra::Rotation3D Class Reference

3D rotation class. More...

#include <IMP/algebra/Rotation3D.h> Inheritance diagram for IMP::algebra::Rotation3D:

## Detailed Description

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:

• XYZ Euler angles
• Rotation Matrix
• Quaternion
• angle/axis representation

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 Vector4Dget_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 Rotation3Doperator/= (const Rotation3D &r)

void show (std::ostream &out=std::cout) const

## Friends

Rotation3D compose (const Rotation3D &a, const Rotation3D &b)

## Constructor & Destructor Documentation

 IMP::algebra::Rotation3D::Rotation3D ( const VectorD< 4 > & v, bool assume_normalized = false )
explicit

Create a rotation from a vector of 4 quaternion coefficients.

Note
: use assume_normalize with care - inputting an unnormalized vector would result in unexpected results if it is true

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.

Exceptions
 ValueException if the rotation is not a unit vector.

Definition at line 90 of file Rotation3D.h.

## Member Function Documentation

 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.

 Vector3D IMP::algebra::Rotation3D::get_rotated ( const Vector3D & o ) const

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.

 Vector3D IMP::algebra::Rotation3D::operator* ( const Vector3D & v ) const

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. Here is the call graph for this function:

 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. Here is the call graph for this function:

## Friends And Related Function Documentation

 Rotation3D compose ( const Rotation3D & a, const Rotation3D & b )
friend