Rosetta
|
Unit quaternion 3-D orientation representation. More...
#include <Quaternion.hh>
Public Types | |
typedef T | Value |
typedef T & | Reference |
typedef T const & | ConstReference |
typedef T * | Pointer |
typedef T const * | ConstPointer |
typedef T | value_type |
typedef T & | reference |
typedef T const & | const_reference |
typedef T * | pointer |
typedef T const * | const_pointer |
typedef NumericTraits< T > | Traits |
typedef xyzVector< T > | Axis |
Public Member Functions | |
Quaternion () | |
Default constructor. More... | |
Quaternion (Value const &w_a, Value const &x_a, Value const &y_a, Value const &z_a, bool const precise=true) | |
Coordinate constructor. More... | |
Quaternion (Axis const &u, Value const &angle, bool const precise=true) | |
Quaternion (Quaternion const &q) | |
Copy constructor. More... | |
~Quaternion () | |
Destructor. More... | |
Quaternion & | operator= (Quaternion const &q) |
void | w (Value newval) |
w More... | |
void | x (Value newval) |
x More... | |
void | y (Value newval) |
y More... | |
void | z (Value newval) |
z More... | |
Value const & | w () const |
w More... | |
Value const & | x () const |
x More... | |
Value const & | y () const |
y More... | |
Value const & | z () const |
z More... | |
Value | w_squared () const |
w squared More... | |
Value | x_squared () const |
x squared More... | |
Value | y_squared () const |
y squared More... | |
Value | z_squared () const |
z squared More... | |
Value | norm () const |
Norm: Should be one. More... | |
Value | norm_squared () const |
Norm squared: Should be one. More... | |
Value | norm_error () const |
Norm error. More... | |
Value | norm_squared_error () const |
Norm squared error. More... | |
Value | magnitude () const |
Magnitude: Should be one. More... | |
Value | magnitude_squared () const |
Magnitude squared: Should be one. More... | |
Value | magnitude_error () const |
Magnitude error. More... | |
Value | magnitude_squared_error () const |
Magnitude squared error. More... | |
bool | is_normalized (Value const &tol=Traits::quaternion_tolerance()) const |
Magnitude squared error within tolerance? More... | |
bool | not_normalized (Value const &tol=Traits::quaternion_tolerance()) const |
Magnitude squared error exceeds tolerance? More... | |
Value | angle () const |
Principal angle of rotation (on [0,2*pi]) More... | |
Axis | axis () const |
Axis of Rotation unit vector (direction for angle on [0,2*pi]) More... | |
Axis & | axis (Axis &u) const |
Axis of rotation unit vector: Passed vector (direction for angle on [0,2*pi]) More... | |
std::string | to_string () const |
to_string, useful for utility exits More... | |
Value | dot (Quaternion const &q) const |
Dot product. More... | |
Value | dot_product (Quaternion const &q) const |
Dot product. More... | |
Quaternion & | normalize () |
Normalize. More... | |
Quaternion & | normalize_if_needed (Value const &tol=Traits::quaternion_tolerance()) |
Normalize if magnitude squared error exceeds tolerance. More... | |
Quaternion & | to_identity () |
Identity. More... | |
Quaternion & | conjugate () |
Conjugate. More... | |
Quaternion & | invert () |
Invert. More... | |
Quaternion & | apply (Quaternion const &q, bool const precise=true) |
Apply a successive Quaternion. More... | |
Quaternion & | left_multiply_by (Quaternion const &q, bool const precise=true) |
Left multiply by a Quaternion. More... | |
Quaternion & | right_multiply_by (Quaternion const &q, bool const precise=true) |
Right multiply by a Quaternion. More... | |
Quaternion & | left_multiply_by_inverse_of (Quaternion const &q, bool const precise=true) |
Left multiply by the inverse of a Quaternion. More... | |
Quaternion & | right_multiply_by_inverse_of (Quaternion const &q, bool const precise=true) |
Right multiply by the inverse of a Quaternion. More... | |
void | swap (Quaternion &q) |
Swap. More... | |
Quaternion | conjugated () const |
Conjugated. More... | |
Quaternion | inverse () const |
Inverse. More... | |
Static Public Member Functions | |
static Quaternion | identity () |
Identity named constructor. More... | |
static Quaternion const & | I () |
Identity Quaternion for expressions. More... | |
Private Attributes | |
Value | w_ |
w coordinate More... | |
Value | x_ |
x coordinate More... | |
Value | y_ |
y coordinate More... | |
Value | z_ |
z coordinate More... | |
Friends | |
class | BodyPosition< T > |
template<class U > | |
Quaternion< U > | operator* (Quaternion< U > const &q2, Quaternion< U > const &q1) |
Quaternion * Quaternion (always normalizes return value) More... | |
template<class U > | |
Quaternion< U > | product (Quaternion< U > const &q2, Quaternion< U > const &q1, bool const precise=true) |
Product: Quaternion * Quaternion. More... | |
template<class U > | |
bool | operator== (Quaternion< U > const &q1, Quaternion< U > const &q2) |
Quaternion == Quaternion. More... | |
template<class U > | |
bool | operator!= (Quaternion< U > const &q1, Quaternion< U > const &q2) |
Quaternion != Quaternion. More... | |
template<class U > | |
Value | dot (Quaternion< U > const &q1, Quaternion< U > const &q2) |
Dot product. More... | |
template<class U > | |
Value | dot_product (Quaternion< U > const &q1, Quaternion< U > const &q2) |
Dot product. More... | |
Unit quaternion 3-D orientation representation.
typedef xyzVector< T > numeric::Quaternion< T >::Axis |
typedef T const* numeric::Quaternion< T >::const_pointer |
typedef T const& numeric::Quaternion< T >::const_reference |
typedef T const* numeric::Quaternion< T >::ConstPointer |
typedef T const& numeric::Quaternion< T >::ConstReference |
typedef T* numeric::Quaternion< T >::Pointer |
typedef T* numeric::Quaternion< T >::pointer |
typedef T& numeric::Quaternion< T >::Reference |
typedef T& numeric::Quaternion< T >::reference |
typedef NumericTraits< T > numeric::Quaternion< T >::Traits |
typedef T numeric::Quaternion< T >::Value |
typedef T numeric::Quaternion< T >::value_type |
|
inline |
Default constructor.
Referenced by numeric::Quaternion< T >::conjugated(), numeric::Quaternion< T >::identity(), and numeric::Quaternion< T >::inverse().
|
inline |
Coordinate constructor.
References numeric::Quaternion< T >::is_normalized(), and numeric::Quaternion< T >::normalize().
|
inline |
|
inline |
Copy constructor.
|
inline |
Destructor.
|
inline |
Principal angle of rotation (on [0,2*pi])
References pyrosetta.distributed.cluster.exceptions::T, and numeric::Quaternion< T >::w_.
Referenced by numeric::BodyPosition< T >::angle().
|
inline |
Apply a successive Quaternion.
References numeric::Quaternion< T >::left_multiply_by(), and enumerate_junctions::q.
Referenced by pyrosetta.distributed.tasks.rosetta_scripts.BaseRosettaScriptsTask::execute().
|
inline |
Axis of Rotation unit vector (direction for angle on [0,2*pi])
References numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::BodyPosition< T >::axis().
|
inline |
Axis of rotation unit vector: Passed vector (direction for angle on [0,2*pi])
References kmeans_adaptive_kernel_density_bb_dependent_rotlib::u, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
|
inline |
Conjugate.
References numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
|
inline |
|
inline |
Dot product.
References enumerate_junctions::q, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
|
inline |
Dot product.
References enumerate_junctions::q, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
|
inlinestatic |
Identity Quaternion for expressions.
References pyrosetta.distributed.cluster.exceptions::T.
|
inlinestatic |
Identity named constructor.
References numeric::Quaternion< T >::Quaternion(), and pyrosetta.distributed.cluster.exceptions::T.
|
inline |
|
inline |
Invert.
References numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::BodyPosition< T >::invert().
|
inline |
Magnitude squared error within tolerance?
References numeric::Quaternion< T >::norm_squared_error(), and loops_kic::tol.
Referenced by numeric::Quaternion< T >::Quaternion().
|
inline |
Left multiply by a Quaternion.
References numeric::Quaternion< T >::normalize(), enumerate_junctions::q, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::Quaternion< T >::apply(), and numeric::BodyPosition< T >::left_transform_by().
|
inline |
Left multiply by the inverse of a Quaternion.
References numeric::Quaternion< T >::normalize(), enumerate_junctions::q, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::BodyPosition< T >::left_transform_by_inverse_of().
|
inline |
Magnitude: Should be one.
References numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::Quaternion< T >::magnitude_error().
|
inline |
Magnitude error.
References ObjexxFCL::abs(), numeric::Quaternion< T >::magnitude(), and pyrosetta.distributed.cluster.exceptions::T.
|
inline |
Magnitude squared: Should be one.
References numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::Quaternion< T >::magnitude_squared_error().
|
inline |
Magnitude squared error.
References ObjexxFCL::abs(), numeric::Quaternion< T >::magnitude_squared(), and pyrosetta.distributed.cluster.exceptions::T.
|
inline |
Norm: Should be one.
References numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::Quaternion< T >::norm_error().
|
inline |
Norm error.
References ObjexxFCL::abs(), numeric::Quaternion< T >::norm(), and pyrosetta.distributed.cluster.exceptions::T.
|
inline |
Norm squared: Should be one.
References numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::Quaternion< T >::norm_squared_error(), numeric::Quaternion< T >::normalize(), and numeric::Quaternion< T >::normalize_if_needed().
|
inline |
Norm squared error.
References ObjexxFCL::abs(), numeric::Quaternion< T >::norm_squared(), and pyrosetta.distributed.cluster.exceptions::T.
Referenced by numeric::Quaternion< T >::is_normalized(), and numeric::Quaternion< T >::not_normalized().
|
inline |
Normalize.
References numeric::Quaternion< T >::norm_squared(), pyrosetta.distributed.cluster.exceptions::T, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::Quaternion< T >::left_multiply_by(), numeric::Quaternion< T >::left_multiply_by_inverse_of(), numeric::BodyPosition< T >::normalize(), numeric::BodyPosition< T >::q_refresh(), numeric::Quaternion< T >::Quaternion(), numeric::BodyPosition< T >::R_refresh(), numeric::Quaternion< T >::right_multiply_by(), and numeric::Quaternion< T >::right_multiply_by_inverse_of().
|
inline |
Normalize if magnitude squared error exceeds tolerance.
References ObjexxFCL::abs(), numeric::Quaternion< T >::norm_squared(), pyrosetta.distributed.cluster.exceptions::T, loops_kic::tol, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::BodyPosition< T >::normalize_if_needed().
|
inline |
Magnitude squared error exceeds tolerance?
References numeric::Quaternion< T >::norm_squared_error(), and loops_kic::tol.
|
inline |
|
inline |
Right multiply by a Quaternion.
References numeric::Quaternion< T >::normalize(), enumerate_junctions::q, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::BodyPosition< T >::right_transform_by().
|
inline |
Right multiply by the inverse of a Quaternion.
References numeric::Quaternion< T >::normalize(), enumerate_junctions::q, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::BodyPosition< T >::right_transform_by_inverse_of().
|
inline |
|
inline |
Identity.
References pyrosetta.distributed.cluster.exceptions::T, numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
Referenced by numeric::BodyPosition< T >::to_identity().
|
inline |
to_string, useful for utility exits
References numeric::interpolation::to_string(), numeric::Quaternion< T >::w_, numeric::Quaternion< T >::x_, numeric::Quaternion< T >::y_, and numeric::Quaternion< T >::z_.
|
inline |
w
References numeric::Quaternion< T >::w_.
|
inline |
w
References numeric::Quaternion< T >::w_.
|
inline |
w squared
References numeric::Quaternion< T >::w_.
|
inline |
|
inline |
|
inline |
x squared
References numeric::Quaternion< T >::x_.
|
inline |
|
inline |
|
inline |
y squared
References numeric::Quaternion< T >::y_.
|
inline |
|
inline |
|
inline |
z squared
References numeric::Quaternion< T >::z_.
|
friend |
|
friend |
Dot product.
|
friend |
Dot product.
|
friend |
Quaternion != Quaternion.
|
friend |
Quaternion * Quaternion (always normalizes return value)
|
friend |
Quaternion == Quaternion.
|
friend |
Product: Quaternion * Quaternion.
|
private |
w coordinate
Referenced by numeric::Quaternion< T >::angle(), numeric::Quaternion< T >::conjugated(), numeric::Quaternion< T >::dot(), numeric::Quaternion< T >::dot_product(), numeric::Quaternion< T >::inverse(), numeric::Quaternion< T >::left_multiply_by(), numeric::Quaternion< T >::left_multiply_by_inverse_of(), numeric::Quaternion< T >::magnitude(), numeric::Quaternion< T >::magnitude_squared(), numeric::Quaternion< T >::norm(), numeric::Quaternion< T >::norm_squared(), numeric::Quaternion< T >::normalize(), numeric::Quaternion< T >::normalize_if_needed(), numeric::Quaternion< T >::operator=(), numeric::BodyPosition< T >::q_refresh(), numeric::BodyPosition< T >::R_refresh(), numeric::Quaternion< T >::right_multiply_by(), numeric::Quaternion< T >::right_multiply_by_inverse_of(), numeric::Quaternion< T >::swap(), numeric::Quaternion< T >::to_identity(), numeric::Quaternion< T >::to_string(), numeric::Quaternion< T >::w(), and numeric::Quaternion< T >::w_squared().
|
private |
x coordinate
Referenced by numeric::Quaternion< T >::axis(), numeric::Quaternion< T >::conjugate(), numeric::Quaternion< T >::conjugated(), numeric::Quaternion< T >::dot(), numeric::Quaternion< T >::dot_product(), numeric::Quaternion< T >::inverse(), numeric::Quaternion< T >::invert(), numeric::Quaternion< T >::left_multiply_by(), numeric::Quaternion< T >::left_multiply_by_inverse_of(), numeric::Quaternion< T >::magnitude(), numeric::Quaternion< T >::magnitude_squared(), numeric::Quaternion< T >::norm(), numeric::Quaternion< T >::norm_squared(), numeric::Quaternion< T >::normalize(), numeric::Quaternion< T >::normalize_if_needed(), numeric::Quaternion< T >::operator=(), numeric::BodyPosition< T >::q_refresh(), numeric::BodyPosition< T >::R_refresh(), numeric::Quaternion< T >::right_multiply_by(), numeric::Quaternion< T >::right_multiply_by_inverse_of(), numeric::Quaternion< T >::swap(), numeric::Quaternion< T >::to_identity(), numeric::Quaternion< T >::to_string(), numeric::Quaternion< T >::x(), and numeric::Quaternion< T >::x_squared().
|
private |
y coordinate
Referenced by numeric::Quaternion< T >::axis(), numeric::Quaternion< T >::conjugate(), numeric::Quaternion< T >::conjugated(), numeric::Quaternion< T >::dot(), numeric::Quaternion< T >::dot_product(), numeric::Quaternion< T >::inverse(), numeric::Quaternion< T >::invert(), numeric::Quaternion< T >::left_multiply_by(), numeric::Quaternion< T >::left_multiply_by_inverse_of(), numeric::Quaternion< T >::magnitude(), numeric::Quaternion< T >::magnitude_squared(), numeric::Quaternion< T >::norm(), numeric::Quaternion< T >::norm_squared(), numeric::Quaternion< T >::normalize(), numeric::Quaternion< T >::normalize_if_needed(), numeric::Quaternion< T >::operator=(), numeric::BodyPosition< T >::q_refresh(), numeric::BodyPosition< T >::R_refresh(), numeric::Quaternion< T >::right_multiply_by(), numeric::Quaternion< T >::right_multiply_by_inverse_of(), numeric::Quaternion< T >::swap(), numeric::Quaternion< T >::to_identity(), numeric::Quaternion< T >::to_string(), numeric::Quaternion< T >::y(), and numeric::Quaternion< T >::y_squared().
|
private |
z coordinate
Referenced by numeric::Quaternion< T >::axis(), numeric::Quaternion< T >::conjugate(), numeric::Quaternion< T >::conjugated(), numeric::Quaternion< T >::dot(), numeric::Quaternion< T >::dot_product(), numeric::Quaternion< T >::inverse(), numeric::Quaternion< T >::invert(), numeric::Quaternion< T >::left_multiply_by(), numeric::Quaternion< T >::left_multiply_by_inverse_of(), numeric::Quaternion< T >::magnitude(), numeric::Quaternion< T >::magnitude_squared(), numeric::Quaternion< T >::norm(), numeric::Quaternion< T >::norm_squared(), numeric::Quaternion< T >::normalize(), numeric::Quaternion< T >::normalize_if_needed(), numeric::Quaternion< T >::operator=(), numeric::BodyPosition< T >::q_refresh(), numeric::BodyPosition< T >::R_refresh(), numeric::Quaternion< T >::right_multiply_by(), numeric::Quaternion< T >::right_multiply_by_inverse_of(), numeric::Quaternion< T >::swap(), numeric::Quaternion< T >::to_identity(), numeric::Quaternion< T >::to_string(), numeric::Quaternion< T >::z(), and numeric::Quaternion< T >::z_squared().