Public Member Functions | Public Attributes

ml7::Quaternion Class Reference

#include <Quaternion.h>

List of all members.

Public Member Functions

 Quaternion (void)
 Quaternion (const Quaternion &q)
Quaternionoperator= (const Quaternion &q)
void swap (Quaternion &q)
 ~Quaternion (void)
 Quaternion (const float i, const float j, const float k, const float r)
 Quaternion (const Vector3 &v, const float phi)
const Quaternion inverted () const
const Quaternion normalized () const
const Quaternion conjugated () const
const float operator[] (unsigned index) const
float & operator[] (unsigned index)
const Quaternion operator- () const
const Quaternion operator+ (const Vector3 &v) const
const Quaternion operator- (const Vector3 &v) const
const Quaternion operator* (const Quaternion &q) const
Quaternionoperator+= (const Vector3 &v)
Quaternionoperator-= (const Vector3 &v)
Quaternionoperator*= (const Quaternion &q)
Quaternionclear ()
Quaternioninvert ()
Quaternioninvert (const Quaternion &q)
Quaternionnormalize ()
Quaternionconjugate ()
Quaternionadd (const Vector3 &v, const float s)
Quaternionrotate (const Vector3 &v)
Quaternionrotation (const Vector3 &v, const float phi)
const bool operator== (const Quaternion &q) const
const bool operator!= (const Quaternion &q) const

Public Attributes

union {
   struct {
      float   i
      float   j
      float   k
      float   r
   } 
   struct {
      Vector3   v
      float   w
   } 
   float   data [4]
}; 

Detailed Description

Represents a quaternion (a three degree of freedom orientation). Used for 3d-physics and -graphics.


Constructor & Destructor Documentation

ml7::Quaternion::Quaternion ( void   )  [inline]

Default constructor. Creates a new quaternion with i = j = k = 0 and r = 1 representing a zero rotation.

ml7::Quaternion::Quaternion ( const Quaternion q  )  [inline]

Copy constructor. Creates a new quaternion with i = q.i, ... , r = q.r.

ml7::Quaternion::~Quaternion ( void   )  [inline]

Destructor.

ml7::Quaternion::Quaternion ( const float  i,
const float  j,
const float  k,
const float  r 
) [inline]

Explicit constructor with parameters for i, j, k and r. Use the function normalize to make the quarternion a legal orientation.

ml7::Quaternion::Quaternion ( const Vector3 v,
const float  phi 
) [inline]

Explicit constructor with parameters for an axis v and an angle phi.


Member Function Documentation

Quaternion & ml7::Quaternion::add ( const Vector3 v,
const float  s 
)

Adds a given vector v scaled by a given scalar s to this quaternion to update the orientation by a specific rotation over time.

Quaternion & ml7::Quaternion::clear (  ) 

Sets i = j = k = 0 and r = 1 representing a zero rotation.

Quaternion & ml7::Quaternion::conjugate (  ) 

Conjugates this quaternion by flipping the signs of i, j and k.

const Quaternion ml7::Quaternion::conjugated (  )  const [inline]

Returns a copy of this quaternion conjugated.

Quaternion & ml7::Quaternion::invert (  ) 

Inverts this quaternion.

Quaternion & ml7::Quaternion::invert ( const Quaternion q  ) 

Replaces this quaternion by a given quaternion q inverted.

const Quaternion ml7::Quaternion::inverted (  )  const

Returns the inverse of this quaternion.

Quaternion & ml7::Quaternion::normalize (  ) 

Normalizes this quaternion to ensure a legal orientation.

const Quaternion ml7::Quaternion::normalized (  )  const

Returns a copy of this quaternion normalized.

const bool ml7::Quaternion::operator!= ( const Quaternion q  )  const [inline]

Checks if a given quaternion v and this have non-identical components.

const Quaternion ml7::Quaternion::operator* ( const Quaternion q  )  const

Returns a copy of this quaternion multiplied by a given quaternion q.

Quaternion & ml7::Quaternion::operator*= ( const Quaternion q  ) 

Multiplies this quaternion by a given quaternion q.

const Quaternion ml7::Quaternion::operator+ ( const Vector3 v  )  const

Returns a copy of this quaternion and adds a given vector v to update the orientation by a specific rotation (represented by the vector v).

Quaternion & ml7::Quaternion::operator+= ( const Vector3 v  ) 

Adds a given vector v to update this orientation by a specific rotation (represented by the vector v).

const Quaternion ml7::Quaternion::operator- (  )  const [inline]

Returns a copy of this vector with the components having signs flipped.

const Quaternion ml7::Quaternion::operator- ( const Vector3 v  )  const

Returns a copy of this quaternion and subtracts a given vector v to update the orientation by a specific rotation (represented by the vector v).

Quaternion & ml7::Quaternion::operator-= ( const Vector3 v  ) 

Subtracts a given vector v to update this orientation by a specific rotation (represented by the vector v).

Quaternion& ml7::Quaternion::operator= ( const Quaternion q  )  [inline]

Copy assignment operator. Sets i = q.i, ... , r = q.r.

const bool ml7::Quaternion::operator== ( const Quaternion q  )  const [inline]

Checks if a given quaternion q and this have identical components.

const float ml7::Quaternion::operator[] ( unsigned  index  )  const [inline]

Indexed component access.

float& ml7::Quaternion::operator[] ( unsigned  index  )  [inline]

Indexed component access.

Quaternion & ml7::Quaternion::rotate ( const Vector3 v  ) 

Rotates this quaternion by a given vector v.

Quaternion & ml7::Quaternion::rotation ( const Vector3 v,
const float  phi 
)

Lets this quaternion represent a rotation defined by an axis v and an angle phi.

void ml7::Quaternion::swap ( Quaternion q  )  [inline]

Swap operation. Swaps the elements of a given quaternion q with this.


Member Data Documentation

union { ... }

Array of all four componets.

The quaternion's first complex component.

The quaternion's second complex component.

The quaternion's third complex component.

The quaternion's float component.

The three complex components as a vector (v = (i, j, k)).

The float component (w = r).


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines