osg::Quat Class Reference

A quaternion class. More...

List of all members.

Public Types

typedef double value_type

Public Member Functions

 Quat ()
 Quat (value_type x, value_type y, value_type z, value_type w)
 Quat (const Vec4f &v)
 Quat (const Vec4d &v)
 Quat (value_type angle, const Vec3f &axis)
 Quat (value_type angle, const Vec3d &axis)
 Quat (value_type angle1, const Vec3f &axis1, value_type angle2, const Vec3f &axis2, value_type angle3, const Vec3f &axis3)
 Quat (value_type angle1, const Vec3d &axis1, value_type angle2, const Vec3d &axis2, value_type angle3, const Vec3d &axis3)
Quatoperator= (const Quat &v)
bool operator== (const Quat &v) const
bool operator!= (const Quat &v) const
bool operator< (const Quat &v) const
Vec4d asVec4 () const
Vec3d asVec3 () const
void set (value_type x, value_type y, value_type z, value_type w)
void set (const osg::Vec4f &v)
void set (const osg::Vec4d &v)
void set (const Matrixf &matrix)
void set (const Matrixd &matrix)
void get (Matrixf &matrix) const
void get (Matrixd &matrix) const
value_typeoperator[] (int i)
value_type operator[] (int i) const
value_typex ()
value_typey ()
value_typez ()
value_typew ()
value_type x () const
value_type y () const
value_type z () const
value_type w () const
bool zeroRotation () const
 return true if the Quat represents a zero rotation, and therefore can be ignored in computations.
const Quat operator * (value_type rhs) const
 Multiply by scalar.
Quatoperator *= (value_type rhs)
 Unary multiply by scalar.
const Quat operator * (const Quat &rhs) const
 Binary multiply.
Quatoperator *= (const Quat &rhs)
 Unary multiply.
Quat operator/ (value_type rhs) const
 Divide by scalar.
Quatoperator/= (value_type rhs)
 Unary divide by scalar.
const Quat operator/ (const Quat &denom) const
 Binary divide.
Quatoperator/= (const Quat &denom)
 Unary divide.
const Quat operator+ (const Quat &rhs) const
 Binary addition.
Quatoperator+= (const Quat &rhs)
 Unary addition.
const Quat operator- (const Quat &rhs) const
 Binary subtraction.
Quatoperator-= (const Quat &rhs)
 Unary subtraction.
const Quat operator- () const
 Negation operator - returns the negative of the quaternion.
value_type length () const
 Length of the quaternion = sqrt( vec . vec ).
value_type length2 () const
 Length of the quaternion = vec . vec.
Quat conj () const
 Conjugate.
const Quat inverse () const
 Multiplicative inverse method: q^(-1) = q^*/(q.q^*).
void makeRotate (value_type angle, value_type x, value_type y, value_type z)
void makeRotate (value_type angle, const Vec3f &vec)
void makeRotate (value_type angle, const Vec3d &vec)
void makeRotate (value_type angle1, const Vec3f &axis1, value_type angle2, const Vec3f &axis2, value_type angle3, const Vec3f &axis3)
void makeRotate (value_type angle1, const Vec3d &axis1, value_type angle2, const Vec3d &axis2, value_type angle3, const Vec3d &axis3)
void makeRotate (const Vec3f &vec1, const Vec3f &vec2)
 Make a rotation Quat which will rotate vec1 to vec2.
void makeRotate (const Vec3d &vec1, const Vec3d &vec2)
 Make a rotation Quat which will rotate vec1 to vec2.
void makeRotate_original (const Vec3d &vec1, const Vec3d &vec2)
void getRotate (value_type &angle, value_type &x, value_type &y, value_type &z) const
 Return the angle and vector components represented by the quaternion.
void getRotate (value_type &angle, Vec3f &vec) const
 Return the angle and vector represented by the quaternion.
void getRotate (value_type &angle, Vec3d &vec) const
 Return the angle and vector represented by the quaternion.
void slerp (value_type t, const Quat &from, const Quat &to)
 Spherical Linear Interpolation.
Vec3f operator * (const Vec3f &v) const
 Rotate a vector by this quaternion.
Vec3d operator * (const Vec3d &v) const
 Rotate a vector by this quaternion.

Public Attributes

value_type _v [4]


Detailed Description

A quaternion class.

It can be used to represent an orientation in 3D space.


Member Typedef Documentation

typedef double osg::Quat::value_type


Constructor & Destructor Documentation

osg::Quat::Quat (  )  [inline]

osg::Quat::Quat ( value_type  x,
value_type  y,
value_type  z,
value_type  w 
) [inline]

osg::Quat::Quat ( const Vec4f v  )  [inline]

osg::Quat::Quat ( const Vec4d v  )  [inline]

osg::Quat::Quat ( value_type  angle,
const Vec3f axis 
) [inline]

osg::Quat::Quat ( value_type  angle,
const Vec3d axis 
) [inline]

osg::Quat::Quat ( value_type  angle1,
const Vec3f axis1,
value_type  angle2,
const Vec3f axis2,
value_type  angle3,
const Vec3f axis3 
) [inline]

osg::Quat::Quat ( value_type  angle1,
const Vec3d axis1,
value_type  angle2,
const Vec3d axis2,
value_type  angle3,
const Vec3d axis3 
) [inline]


Member Function Documentation

Quat& osg::Quat::operator= ( const Quat v  )  [inline]

bool osg::Quat::operator== ( const Quat v  )  const [inline]

bool osg::Quat::operator!= ( const Quat v  )  const [inline]

bool osg::Quat::operator< ( const Quat v  )  const [inline]

Vec4d osg::Quat::asVec4 (  )  const [inline]

Vec3d osg::Quat::asVec3 (  )  const [inline]

void osg::Quat::set ( value_type  x,
value_type  y,
value_type  z,
value_type  w 
) [inline]

void osg::Quat::set ( const osg::Vec4f v  )  [inline]

void osg::Quat::set ( const osg::Vec4d v  )  [inline]

void osg::Quat::set ( const Matrixf matrix  ) 

void osg::Quat::set ( const Matrixd matrix  ) 

void osg::Quat::get ( Matrixf matrix  )  const

void osg::Quat::get ( Matrixd matrix  )  const

value_type& osg::Quat::operator[] ( int  i  )  [inline]

value_type osg::Quat::operator[] ( int  i  )  const [inline]

value_type& osg::Quat::x (  )  [inline]

value_type& osg::Quat::y (  )  [inline]

value_type& osg::Quat::z (  )  [inline]

value_type& osg::Quat::w (  )  [inline]

value_type osg::Quat::x (  )  const [inline]

value_type osg::Quat::y (  )  const [inline]

value_type osg::Quat::z (  )  const [inline]

value_type osg::Quat::w (  )  const [inline]

bool osg::Quat::zeroRotation (  )  const [inline]

return true if the Quat represents a zero rotation, and therefore can be ignored in computations.

const Quat osg::Quat::operator * ( value_type  rhs  )  const [inline]

Multiply by scalar.

Quat& osg::Quat::operator *= ( value_type  rhs  )  [inline]

Unary multiply by scalar.

const Quat osg::Quat::operator * ( const Quat rhs  )  const [inline]

Binary multiply.

Quat& osg::Quat::operator *= ( const Quat rhs  )  [inline]

Unary multiply.

Quat osg::Quat::operator/ ( value_type  rhs  )  const [inline]

Divide by scalar.

Quat& osg::Quat::operator/= ( value_type  rhs  )  [inline]

Unary divide by scalar.

const Quat osg::Quat::operator/ ( const Quat denom  )  const [inline]

Binary divide.

Quat& osg::Quat::operator/= ( const Quat denom  )  [inline]

Unary divide.

const Quat osg::Quat::operator+ ( const Quat rhs  )  const [inline]

Binary addition.

Quat& osg::Quat::operator+= ( const Quat rhs  )  [inline]

Unary addition.

const Quat osg::Quat::operator- ( const Quat rhs  )  const [inline]

Binary subtraction.

Quat& osg::Quat::operator-= ( const Quat rhs  )  [inline]

Unary subtraction.

const Quat osg::Quat::operator- (  )  const [inline]

Negation operator - returns the negative of the quaternion.

Basically just calls operator - () on the Vec4

value_type osg::Quat::length (  )  const [inline]

Length of the quaternion = sqrt( vec . vec ).

value_type osg::Quat::length2 (  )  const [inline]

Length of the quaternion = vec . vec.

Quat osg::Quat::conj (  )  const [inline]

Conjugate.

const Quat osg::Quat::inverse (  )  const [inline]

Multiplicative inverse method: q^(-1) = q^*/(q.q^*).

void osg::Quat::makeRotate ( value_type  angle,
value_type  x,
value_type  y,
value_type  z 
)

void osg::Quat::makeRotate ( value_type  angle,
const Vec3f vec 
)

void osg::Quat::makeRotate ( value_type  angle,
const Vec3d vec 
)

void osg::Quat::makeRotate ( value_type  angle1,
const Vec3f axis1,
value_type  angle2,
const Vec3f axis2,
value_type  angle3,
const Vec3f axis3 
)

void osg::Quat::makeRotate ( value_type  angle1,
const Vec3d axis1,
value_type  angle2,
const Vec3d axis2,
value_type  angle3,
const Vec3d axis3 
)

void osg::Quat::makeRotate ( const Vec3f vec1,
const Vec3f vec2 
)

Make a rotation Quat which will rotate vec1 to vec2.

Generally take a dot product to get the angle between these and then use a cross product to get the rotation axis Watch out for the two special cases when the vectors are co-incident or opposite in direction.

void osg::Quat::makeRotate ( const Vec3d vec1,
const Vec3d vec2 
)

Make a rotation Quat which will rotate vec1 to vec2.

Generally take a dot product to get the angle between these and then use a cross product to get the rotation axis Watch out for the two special cases of when the vectors are co-incident or opposite in direction.

void osg::Quat::makeRotate_original ( const Vec3d vec1,
const Vec3d vec2 
)

void osg::Quat::getRotate ( value_type angle,
value_type x,
value_type y,
value_type z 
) const

Return the angle and vector components represented by the quaternion.

void osg::Quat::getRotate ( value_type angle,
Vec3f vec 
) const

Return the angle and vector represented by the quaternion.

void osg::Quat::getRotate ( value_type angle,
Vec3d vec 
) const

Return the angle and vector represented by the quaternion.

void osg::Quat::slerp ( value_type  t,
const Quat from,
const Quat to 
)

Spherical Linear Interpolation.

As t goes from 0 to 1, the Quat object goes from "from" to "to".

Vec3f osg::Quat::operator * ( const Vec3f v  )  const [inline]

Rotate a vector by this quaternion.

Vec3d osg::Quat::operator * ( const Vec3d v  )  const [inline]

Rotate a vector by this quaternion.


Member Data Documentation

value_type osg::Quat::_v[4]


The documentation for this class was generated from the following file:
Generated at Sun Oct 14 02:12:15 2007 for the OpenSceneGraph by doxygen 1.5.3.