Isis 3 Programmer Reference
|
Provide operations for quaternion arithmetic. More...
#include <Quaternion.h>
Public Member Functions | |
Quaternion () | |
Constructs an empty quaternion. More... | |
Quaternion (const std::vector< double > matrix) | |
Construct a Quaternion class from a matrix stored as a vector < double > with 9 elements or from a quaternion stored as a vector < double > with 4 elements. More... | |
~Quaternion () | |
Destroys the Quaternion object. More... | |
std::vector< double > | ToMatrix () |
Converts quaternion to 3x3 rotational matrix. More... | |
std::vector< double > | ToAngles (int axis3, int axis2, int axis1) |
Return the camera angles (right ascension, declination, and twist) for the quaternion. More... | |
void | Set (std::vector< double >) |
Sets the quaternion value. More... | |
std::vector< double > | GetQuaternion () const |
Return the quaternion as a vector. More... | |
Quaternion & | operator= (const Quaternion &quat) |
Assign value of quaternion class to another quaternion. More... | |
Quaternion & | operator*= (const Quaternion &quat) |
Multiply current Naif quaternion by another Naif quaternion, replacing the current quaternion. More... | |
Quaternion | operator* (const Quaternion &quat) const |
Multiply two Naif quaternions to create a new quaternion. More... | |
Quaternion | operator* (const double &scalar) |
Multiply a quaternion by a scalar. More... | |
double & | operator[] (int index) |
Return a member of a quaternion. More... | |
std::vector< double > | Qxv (const std::vector< double > &vin) |
Multiply a vector by a quaternion (rotate the vector) More... | |
Quaternion | Conjugate () |
Returns the conjugate of the quaternion. More... | |
Private Member Functions | |
void | Polish (Quaternion &quat) |
Polish the quaternion – make the first component positive. More... | |
Private Attributes | |
std::vector< double > | p_quaternion |
Quaternion. More... | |
Provide operations for quaternion arithmetic.
This class provides a wrapper for existing Naif quaternion functions and also includes other operators and methods useful for working with quaternions.
Definition at line 36 of file Quaternion.h.
Isis::Quaternion::Quaternion | ( | ) |
Constructs an empty quaternion.
Definition at line 26 of file Quaternion.cpp.
References p_quaternion.
Isis::Quaternion::Quaternion | ( | const std::vector< double > | rotation | ) |
Construct a Quaternion class from a matrix stored as a vector < double > with 9 elements or from a quaternion stored as a vector < double > with 4 elements.
rotation | rotation defined as either a matrix or another quaternion loaded as a vector |
Definition at line 42 of file Quaternion.cpp.
References p_quaternion, and Set().
Isis::Quaternion::~Quaternion | ( | ) |
Destroys the Quaternion object.
Definition at line 49 of file Quaternion.cpp.
Quaternion Isis::Quaternion::Conjugate | ( | ) |
Returns the conjugate of the quaternion.
Definition at line 197 of file Quaternion.cpp.
References p_quaternion.
Referenced by Qxv().
|
inline |
Return the quaternion as a vector.
Definition at line 54 of file Quaternion.h.
References p_quaternion.
Quaternion Isis::Quaternion::operator* | ( | const double & | scalar | ) |
Multiply a quaternion by a scalar.
Just multiply the rotation part and polish the resulting quaternion so it is still a unit quaternion with positive rotation. For example,
[in] | scalar | (const double &) scalar value to be multiplied times the current quaternion |
Definition at line 172 of file Quaternion.cpp.
References p_quaternion, Polish(), and Isis::IException::Programmer.
Quaternion Isis::Quaternion::operator* | ( | const Quaternion & | quat | ) | const |
Multiply two Naif quaternions to create a new quaternion.
For example,
More information is available on quaternions and the multiplication algorithm in the Naif routine qxq_c.c
[in] | quat | (const Quaternion &) quaternion to multiply on the right |
Definition at line 147 of file Quaternion.cpp.
Quaternion & Isis::Quaternion::operator*= | ( | const Quaternion & | quat | ) |
Multiply current Naif quaternion by another Naif quaternion, replacing the current quaternion.
For example,
More information on quaternions and the multiplication algorithm is available in the Naif routine qxq_c.
[in] | quat | (const Quaternion &) quaternion to multiply on the right |
Definition at line 117 of file Quaternion.cpp.
References p_quaternion.
Quaternion & Isis::Quaternion::operator= | ( | const Quaternion & | quat | ) |
Assign value of quaternion class to another quaternion.
For example,
quat | The Quaternion to copy |
Definition at line 95 of file Quaternion.cpp.
References p_quaternion.
|
inline |
Return a member of a quaternion.
For example,
[in] | index | (const int &) quaternion member to return |
Definition at line 79 of file Quaternion.h.
References p_quaternion.
|
private |
Polish the quaternion – make the first component positive.
Definition at line 242 of file Quaternion.cpp.
References p_quaternion.
Referenced by operator*().
std::vector< double > Isis::Quaternion::Qxv | ( | const std::vector< double > & | vin | ) |
Multiply a vector by a quaternion (rotate the vector)
[in] | vin | (const std::vector<double>(3)) Vector to be multiplied (rotated) |
Definition at line 215 of file Quaternion.cpp.
References Conjugate(), p_quaternion, and Isis::IException::Programmer.
void Isis::Quaternion::Set | ( | std::vector< double > | rotation | ) |
Sets the quaternion value.
rotation | rotation defined as either a matrix or a set of 3 angles |
Definition at line 56 of file Quaternion.cpp.
References Isis::NaifStatus::CheckErrors(), p_quaternion, and Isis::IException::Programmer.
Referenced by Quaternion().
std::vector< double > Isis::Quaternion::ToAngles | ( | int | axis3, |
int | axis2, | ||
int | axis1 | ||
) |
Return the camera angles (right ascension, declination, and twist) for the quaternion.
Definition at line 260 of file Quaternion.cpp.
References Isis::NaifStatus::CheckErrors(), and ToMatrix().
std::vector< double > Isis::Quaternion::ToMatrix | ( | ) |
Converts quaternion to 3x3 rotational matrix.
Definition at line 75 of file Quaternion.cpp.
References p_quaternion.
Referenced by Isis::SpiceRotation::LoadCache(), and ToAngles().
|
private |
Definition at line 93 of file Quaternion.h.
Referenced by Conjugate(), GetQuaternion(), operator*(), operator*=(), operator=(), operator[](), Polish(), Quaternion(), Qxv(), Set(), and ToMatrix().