openvrml::quatf Struct Reference

A POD-struct comprising a quaternion. More...

#include <openvrml/basetypes.h>

List of all members.

Public Member Functions

quatfoperator*= (const quatf &quat) throw ()
 Multiply by a quaternion.
quatfoperator*= (float scalar) throw ()
 Multiply by a scalar.
quatfoperator/= (float scalar) throw ()
 Divide by a scalar.
quatfoperator+= (const quatf &quat) throw ()
 Add a quaternion.
quatfoperator-= (const quatf &quat) throw ()
 Subtract a quaternion.
const float & operator[] (std::size_t index) const throw ()
 Array element dereference operator (const version).
float & operator[] (std::size_t index) throw ()
 Array element dereference operator (non-const version).
float x () const throw ()
 Get the x component.
float y () const throw ()
 Get the y component.
float z () const throw ()
 Get the z component.
float w () const throw ()
 Get the w component.
void x (float value) throw ()
 Set the x component.
void y (float value) throw ()
 Set the y component.
void z (float value) throw ()
 Set the z component.
void w (float value) throw ()
 Set the w component.
const quatf conjugate () const throw ()
 Get the conjugate.
const quatf inverse () const throw ()
 Get the inverse.
float norm () const throw ()
 Get the norm.
const quatf normalize () const throw ()
 Normalize the quaternion.

Public Attributes

float quat [4]
 An array comprising the quaternion components.

Related Functions

(Note that these are not member functions.)

const openvrml::quatf make_quatf () throw()
 Create a default quatf.
const openvrml::quatf make_quatf (const float x, const float y, const float z, const float w) throw()
 Create a quatf from four values.
const openvrml::quatf make_quatf (const float(&quat)[4]) throw()
 Create a quatf from an array of four values.
const openvrml::quatf make_quatf (const mat4f &mat) throw()
 Create a quatf from a rotation matrix.
const openvrml::quatf make_quatf (const rotation &rot) throw()
 Create a quatf from a rotation.
const openvrml::quatf operator* (const quatf &lhs, const quatf &rhs) throw()
 Multiply two quaternions.
const openvrml::quatf operator* (const quatf &quat, const float scalar) throw()
 Multiply a quaternion by a scalar.
const openvrml::quatf operator* (const float scalar, const quatf &quat) throw()
 Multiply a scalar by a quaternion.
const openvrml::quatf operator/ (const quatf &quat, const float scalar) throw()
 Divide a quaternion by a scalar.
const openvrml::quatf operator+ (const quatf &lhs, const quatf &rhs) throw()
 Add two quaternions.
const openvrml::quatf operator- (const quatf &lhs, const quatf &rhs) throw()
 Take the difference between two quaternions.
std::ostream & operator<< (std::ostream &out, const quatf &quat)
 Stream output.
bool operator== (const quatf &lhs, const quatf &rhs) throw()
 Compare for equality.
bool operator!= (const quatf &lhs, const quatf &rhs) throw()
 Compare for inequality.

Detailed Description

A POD-struct comprising a quaternion.


Member Function Documentation

openvrml::quatf & openvrml::quatf::operator*= ( const quatf quat) throw ()

Multiply by a quaternion.

Note:

\[ qr = ( \vec{q_v} \times \vec{r_v} + r_w \vec{q_v} + q_w \vec{r_v}, q_w r_w - \vec{q_v} \cdotp \vec{r_v}) \]

Parameters:
[in]quatthe quaternion by which to multiply.
Returns:
a reference to the object.
openvrml::quatf & openvrml::quatf::operator*= ( float  scalar) throw ()

Multiply by a scalar.

Parameters:
[in]scalarvalue by which to multiply.
Returns:
a reference to the object.
openvrml::quatf & openvrml::quatf::operator/= ( float  scalar) throw ()

Divide by a scalar.

Parameters:
[in]scalarvalue by which to divide.
Returns:
a reference to the object.
openvrml::quatf & openvrml::quatf::operator+= ( const quatf quat) throw ()

Add a quaternion.

Parameters:
[in]quatthe quaternion to add.
Returns:
a reference to the object.
openvrml::quatf & openvrml::quatf::operator-= ( const quatf quat) throw ()

Subtract a quaternion.

Parameters:
[in]quatthe quaternion to subtract.
Returns:
a reference to the object.
const float & openvrml::quatf::operator[] ( std::size_t  index) const throw () [inline]

Array element dereference operator (const version).

Parameters:
[in]indexan index from 0–3.
Precondition:
index is not larger than 3.
float & openvrml::quatf::operator[] ( std::size_t  index) throw () [inline]

Array element dereference operator (non-const version).

Parameters:
[in]indexan index from 0–3.
Precondition:
index is not larger than 3.
float openvrml::quatf::x ( ) const throw () [inline]

Get the x component.

Returns:
the x component value.
float openvrml::quatf::y ( ) const throw () [inline]

Get the y component.

Returns:
the y component value.
float openvrml::quatf::z ( ) const throw () [inline]

Get the z component.

Returns:
the z component value.
float openvrml::quatf::w ( ) const throw () [inline]

Get the w component.

Returns:
the w component value.
void openvrml::quatf::x ( float  value) throw () [inline]

Set the x component.

Parameters:
[in]valuex component value.
void openvrml::quatf::y ( float  value) throw () [inline]

Set the y component.

Parameters:
[in]valuey component value.
void openvrml::quatf::z ( float  value) throw () [inline]

Set the z component.

Parameters:
[in]valuez component value.
void openvrml::quatf::w ( float  value) throw () [inline]

Set the w component.

Parameters:
[in]valuew component value.
const openvrml::quatf openvrml::quatf::conjugate ( ) const throw ()

Get the conjugate.

Note:

\[ q^* = (- \vec{q_v}, q_w) \]

Returns:
the conjugate of the quaternion.
const openvrml::quatf openvrml::quatf::inverse ( ) const throw ()

Get the inverse.

Note:

\[ q^{-1} = \frac{q^*}{n(q)} \]

Returns:
the multiplicative inverse.
float openvrml::quatf::norm ( ) const throw ()

Get the norm.

Note:

\[ n(q) = q_x^2 + q_y^2 + q_z^2 + q_w^2 \]

Returns:
the norm.
const openvrml::quatf openvrml::quatf::normalize ( ) const throw ()

Normalize the quaternion.

Returns:
a unit quaternion derived from the quaternion.

Friends And Related Function Documentation

const openvrml::quatf make_quatf ( ) throw() [related]

Create a default quatf.

Returns:
a quatf with the value [0.0, 0.0, 0.0, 1.0].
const openvrml::quatf make_quatf ( const float  x,
const float  y,
const float  z,
const float  w 
) throw() [related]

Create a quatf from four values.

Parameters:
[in]xthe x vector component.
[in]ythe y vector component.
[in]zthe z vector component.
[in]wthe scalar value w.
Returns:
a quatf with the value [x, y, z, w].
const openvrml::quatf make_quatf ( const float(&)  quat[4]) throw() [related]

Create a quatf from an array of four values.

Parameters:
[in]quatthe first three values in the array are used for the x, y, and z vector components, respectively. The fourth value in the array is used for the scalar part of the quaternion.
Returns:
a quatf with the values in quat.
const openvrml::quatf make_quatf ( const mat4f mat) throw() [related]

Create a quatf from a rotation matrix.

Parameters:
[in]mata rotation matrix.
Returns:
a quatf corresponding to the rotation applied by mat.
const openvrml::quatf make_quatf ( const rotation rot) throw() [related]

Create a quatf from a rotation.

Parameters:
[in]rota rotation.
Returns:
a quatf corresponding to the rotation applied by rot.
const openvrml::quatf operator* ( const quatf lhs,
const quatf rhs 
) throw() [related]

Multiply two quaternions.

Parameters:
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns:
the product of lhs and rhs.
const openvrml::quatf operator* ( const quatf quat,
const float  scalar 
) throw() [related]

Multiply a quaternion by a scalar.

Parameters:
[in]quatquaternion.
[in]scalarscalar.
Returns:
the product of quat and scalar.
const openvrml::quatf operator* ( const float  scalar,
const quatf quat 
) throw() [related]

Multiply a scalar by a quaternion.

Parameters:
[in]scalarscalar.
[in]quatquaternion.
Returns:
the product of scalar and quat.
const openvrml::quatf operator/ ( const quatf quat,
const float  scalar 
) throw() [related]

Divide a quaternion by a scalar.

Parameters:
[in]quatquaternion.
[in]scalarscalar.
Returns:
the result of dividing quat by scalar.
const openvrml::quatf operator+ ( const quatf lhs,
const quatf rhs 
) throw() [related]

Add two quaternions.

Parameters:
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns:
the sum of lhs and rhs.
const openvrml::quatf operator- ( const quatf lhs,
const quatf rhs 
) throw() [related]

Take the difference between two quaternions.

Parameters:
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns:
the difference between lhs and rhs.
std::ostream & operator<< ( std::ostream &  out,
const quatf quat 
) [related]

Stream output.

Parameters:
[in,out]outan output stream.
[in]quata quaternion.
Returns:
out.
bool operator== ( const quatf lhs,
const quatf rhs 
) throw() [related]

Compare for equality.

Parameters:
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns:
true if lhs and rhs are equal; false otherwise.
bool operator!= ( const quatf lhs,
const quatf rhs 
) throw() [related]

Compare for inequality.

Parameters:
[in]lhsleft-hand operand.
[in]rhsright-hand operand.
Returns:
true if lhs and rhs are not equal; false otherwise.

Member Data Documentation

An array comprising the quaternion components.