Home | Download | Screen shots | Discussion | Documentation
--- | --- | --- | --- | ---

Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members | Related Pages

# openvrml::quatf Class Reference
[Base Types]

List of all members.

## Detailed Description

A quaternion.

## Public Member Functions

| quatf () throw ()
| Default constructor.
| quatf (float x, float y, float z, float w) throw ()
| Construct from four values.
| quatf (const float(&quat)[4]) throw ()
| Construct from an array of four values.
| quatf (const rotation &rot) throw ()
| Construct from an rotation.
| quatf (const mat4f &mat) throw ()
| Construct from a rotation matrix.
quatf & | operator *= (const quatf &quat) throw ()
| Multiply by a quaternion.
quatf & | operator *= (float scalar) throw ()
| Multiply by a scalar.
quatf & | operator/= (float scalar) throw ()
| Divide by a scalar.
quatf & | operator+= (const quatf &quat) throw ()
| Add a quaternion.
quatf & | operator-= (const quatf &quat) throw ()
| Subtract a quaternion.
const float & | operator[] (size_t index) const throw ()
| Array element dereference operator (const version).
float & | operator[] (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.

## Private Attributes

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

## Related Functions

(Note that these are not member functions.)
const quatf | operator * (const quatf &lhs, const quatf &rhs) throw()
| Multiply two quaternions.
const quatf | operator * (const quatf &quat, const float scalar) throw()
| Multiply a quaternion by a scalar.
const quatf | operator * (const float scalar, const quatf &quat) throw()
| Multiply a scalar by a quaternion.
const quatf | operator/ (const quatf &quat, const float scalar) throw()
| Divide a quaternion by a scalar.
const quatf | operator+ (const quatf &lhs, const quatf &rhs) throw()
| Add two quaternions.
const 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.

## Constructor & Destructor Documentation

openvrml::quatf::quatf | ( |  | ) | throw ()

| Default constructor.

openvrml::quatf::quatf | ( | float | x,
|  | float | y,
|  | float | z,
|  | float | w
| ) | throw ()

Construct from four values.

Parameters:

  | x | the x vector component.
  | y | the y vector component.
  | z | the z vector component.
  | w | the scalar value w.

openvrml::quatf::quatf | ( | const float & | quat[4] | ) | throw ()`[explicit]`

Construct from an array of four values.

Parameters:

  | quat | the 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.

openvrml::quatf::quatf | ( | const rotation & | rot | ) | throw ()`[explicit]`

Construct from an rotation.

Parameters:

  | rot | a rotation.

openvrml::quatf::quatf | ( | const mat4f & | mat | ) | throw ()`[explicit]`

Construct from a rotation matrix.

Parameters:

  | mat | a rotation matrix.

## Member Function Documentation

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

Multiply by a quaternion.

Note:
  qr = (qv x rv + rw qv + qw rv, qwrw
  - qv . rv)

Parameters:

  | quat | the quaternion by which to multiply.

Returns:
  a reference to the object.

quatf & openvrml::quatf::operator *= | ( | float | scalar | ) | throw ()

Multiply by a scalar.

Parameters:

  | scalar | value by which to multiply.

Returns:
  a reference to the object.

quatf & openvrml::quatf::operator/= | ( | float | scalar | ) | throw ()

Divide by a scalar.

Parameters:

  | scalar | value by which to divide.

Returns:
  a reference to the object.

quatf & openvrml::quatf::operator+= | ( | const quatf & | quat | ) | throw ()

Add a quaternion.

Parameters:

  | quat | the quaternion to add.

Returns:
  a reference to the object.

quatf & openvrml::quatf::operator-= | ( | const quatf & | quat | ) | throw ()

Subtract a quaternion.

Parameters:

  | quat | the quaternion to subtract.

Returns:
  a reference to the object.

const float & openvrml::quatf::operator[] | ( | size_t | index | ) | const throw ()`[inline]`

Array element dereference operator (const version).

Parameters:

  | index | an index from 0 - 3.

Precondition:
  `index` is not larger than 3.

float & openvrml::quatf::operator[] | ( | size_t | index | ) | throw ()`[inline]`

Array element dereference operator (non-const version).

Parameters:

  | index | an 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:

  | value | x component value.

void openvrml::quatf::y | ( | float | value | ) | throw ()`[inline]`

Set the y component.

Parameters:

  | value | y component value.

void openvrml::quatf::z | ( | float | value | ) | throw ()`[inline]`

Set the z component.

Parameters:

  | value | z component value.

void openvrml::quatf::w | ( | float | value | ) | throw ()`[inline]`

Set the w component.

Parameters:

  | value | w component value.

const quatf openvrml::quatf::conjugate | ( |  | ) | const throw ()

Get the conjugate.

Note:
  q* = (-qv, qw)

Returns:
  the conjugate of the quaternion.

const quatf openvrml::quatf::inverse | ( |  | ) | const throw ()

Get the inverse.

Note:
  q-1 = q* / n(q)

Returns:
  the multiplicative inverse.

float openvrml::quatf::norm | ( |  | ) | const throw ()

Get the norm.

Note:
  n(q) = qx2 + qy2 + qz2 + qw2

Returns:
  the norm.

const quatf openvrml::quatf::normalize | ( |  | ) | const throw ()

Normalize the quaternion.

Returns:
  a unit quaternion derived from the quaternion.

## Friends And Related Function Documentation

const quatf operator * | ( | const quatf & | lhs,
|  | const quatf & | rhs
| ) | throw()`[related]`

Multiply two quaternions.

Parameters:

  | lhs | left-hand operand.
  | rhs | right-hand operand.

Returns:
  the product of `lhs` and `rhs`.

const quatf operator * | ( | const quatf & | quat,
|  | const float | scalar
| ) | throw()`[related]`

Multiply a quaternion by a scalar.

Parameters:

  | quat | quaternion.
  | scalar | scalar.

Returns:
  the product of `quat` and `scalar`.

const quatf operator * | ( | const float | scalar,
|  | const quatf & | quat
| ) | throw()`[related]`

Multiply a scalar by a quaternion.

Parameters:

  | scalar | scalar.
  | quat | quaternion.

Returns:
  the product of `scalar` and `quat`.

const quatf operator/ | ( | const quatf & | quat,
|  | const float | scalar
| ) | throw()`[related]`

Divide a quaternion by a scalar.

Parameters:

  | quat | quaternion.
  | scalar | scalar.

Returns:
  the result of dividing `quat` by `scalar`.

const quatf operator+ | ( | const quatf & | lhs,
|  | const quatf & | rhs
| ) | throw()`[related]`

Add two quaternions.

Parameters:

  | lhs | left-hand operand.
  | rhs | right-hand operand.

Returns:
  the sum of `lhs` and `rhs`.

const quatf operator- | ( | const quatf & | lhs,
|  | const quatf & | rhs
| ) | throw()`[related]`

Take the difference between two quaternions.

Parameters:

  | lhs | left-hand operand.
  | rhs | right-hand operand.

Returns:
  the difference between `lhs` and `rhs`.

std::ostream & operator<< | ( | std::ostream & | out,
|  | const quatf & | quat
| ) | `[related]`

Stream output.

Parameters:

  | out | an output stream.
  | quat | a quaternion.

Returns:
  `out`.

bool operator== | ( | const quatf & | lhs,
|  | const quatf & | rhs
| ) | throw()`[related]`

Compare for equality.

Parameters:

  | lhs | left-hand operand.
  | rhs | right-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:

  | lhs | left-hand operand.
  | rhs | right-hand operand.

Returns:
  `true` if `lhs` and `rhs` are not equal; `false` otherwise.

## Member Data Documentation

float openvrml::quatf::quat[4]`[private]`

| An array comprising the quaternion components. For internal use only.