Kwaternion
[Moduł Math]


Komponenty

struct  common::QUATERNION
 Kwaternion. Więcej...

Funkcje

QUATERNION common::operator* (const QUATERNION pt, float v)
QUATERNION common::operator/ (const QUATERNION pt, float v)
QUATERNION common::operator* (float v, const QUATERNION pt)
QUATERNION common::operator/ (float v, const QUATERNION pt)
void common::swap (QUATERNION &v1, QUATERNION &v2)
float common::CalcQuaternionAngle (const QUATERNION &Q)
 Zwraca kąt obrotu jaki reprezentuje ten kwaternion.
void common::CalcQuaternionAxis (VEC3 *Out, const QUATERNION &Q)
 Zwraca oś obrotu jaką reprezentuje ten kwaternion.
bool common::QuaternionEqual (const QUATERNION &q1, const QUATERNION &q2)
 Zwraca true, jeśli podane kwaterniony są sobie mniej więcej równe.
void common::Minus (QUATERNION *q)
 Ujemny kwaternion.
void common::Minus (QUATERNION *Out, const QUATERNION &q)
void common::Add (QUATERNION *Out, const QUATERNION &q1, const QUATERNION &q2)
 Dodawanie, odejmowanie, mnożenie kwaternionów.
void common::Sub (QUATERNION *Out, const QUATERNION &q1, const QUATERNION &q2)
void common::Mul (QUATERNION *Out, const QUATERNION &q1, const QUATERNION &q2)
void common::Mul (QUATERNION *q, float v)
 Mnożenie i dzielenie kwaterniona przez skalar.
void common::Div (QUATERNION *q, float v)
void common::Mul (QUATERNION *Out, const QUATERNION &q, float v)
void common::Div (QUATERNION *Out, const QUATERNION &q, float v)
void common::RotationMatrixToQuaternion (QUATERNION *Out, const MATRIX &RotationMatrix)
 Tworzy kwaternion na podstawie macierzy obrotu.
void common::QuaternionToRotationMatrix (MATRIX *Out, const QUATERNION &q)
 Przekształca kwaternion w macierz obrotu.
void common::QuaternionTransform (VEC3 *Out, const VEC3 &p, const QUATERNION &q)
 Przekształca punkt/wektor przez kwaternion obracając go o ten kwaternion.
void common::EulerAnglesToQuaternionO2I (QUATERNION *Out, float Yaw, float Pitch, float Roll)
 Konwersja kątów Eulera na kwaternion (który obraca ze wsp. obiektu do świata, czyli object -> interial space) [a może odwrotnie?].
void common::EulerAnglesToQuaternionI2O (QUATERNION *Out, float Yaw, float Pitch, float Roll)
 Konwersja kątów Eulera na kwaternion (który obraca ze wsp. świata do obiektu, czyli interial -> object space) [a może odwrotnie?].
void common::QuaternionO2IToEulerAngles (float *Yaw, float *Pitch, float *Roll, const QUATERNION &q)
 Konwersja kwaterniona który obraca ze wsp. obiektu do świata, czyli object -> interial space, na kąty Eulera.
void common::QuaternionI2OToEulerAngles (float *Yaw, float *Pitch, float *Roll, const QUATERNION &q)
 Konwersja kwaterniona który obraca ze wsp. świata do obiektu, czyli interial -> object space, na kąty Eulera.
void common::QuaternionRotationX (QUATERNION *Out, float a)
 Tworzy kwaternion obracający wokół osi X.
void common::QuaternionRotationY (QUATERNION *Out, float a)
 Tworzy kwaternion obracający wokół osi Y.
void common::QuaternionRotationZ (QUATERNION *Out, float a)
 Tworzy kwaternion obracający wokół osi Z.
void common::AxisToQuaternion (QUATERNION *Out, const VEC3 &Axis, float Angle)
 Tworzy kwaternion na podstawie osi obrotu i kąta.
void common::QuaternionDiff (QUATERNION *Out, const QUATERNION &a, const QUATERNION &b)
 Oblica "różnicę" dwóch kwaternionów reprezentującą taki obrót że a*Out = b.
void common::Conjugate (QUATERNION *q)
 Kwaternion sprzężony do danego.
void common::Conjugate (QUATERNION *Out, const QUATERNION &q)
void common::Inverse (QUATERNION *Out, const QUATERNION &q)
 Odwrotność kwaterniona.
void common::Normalize (QUATERNION *Out, const QUATERNION &q)
 Normalizacja kwaternion.
void common::Normalize (QUATERNION *InOut)
float common::Dot (const QUATERNION &q1, const QUATERNION &q2)
 Iloczyn skalarny dwóch kwaternionów.
float common::LengthSq (const QUATERNION &q)
 Kwadrat długości kwaterniona.
float common::Length (const QUATERNION &q)
 Długość kwaterniona.
void common::Log (QUATERNION *Out, const QUATERNION &q)
void common::Exp (QUATERNION *Out, const QUATERNION &q)
void common::Pow (QUATERNION *InOut, float t)
 Podnieś kwaternion do potęgi.
void common::Pow (QUATERNION *Out, const QUATERNION &q, float t)
void common::Lerp (QUATERNION *Out, const QUATERNION &q1, const QUATERNION &q2, float t)
 Interpolacja normalna kwaternionów.
void common::Slerp (QUATERNION *Out, const QUATERNION &q0, const QUATERNION &q1, float t)
 Interpolacja sferyczna kwaternionów.
void common::Squad (QUATERNION *Out, const QUATERNION &Q1, const QUATERNION &A, const QUATERNION &B, const QUATERNION &C, float t)
void common::SquadSetup (QUATERNION *OutA, QUATERNION *OutB, QUATERNION *OutC, const QUATERNION &Q0, const QUATERNION &Q1, const QUATERNION &Q2, const QUATERNION &Q3)

Zmienne

const QUATERNION common::QUATERNION_ZERO
const QUATERNION common::QUATERNION_IDENTITY

Opis szczegółowy


Dokumentacja funkcji

void common::Add ( QUATERNION *  Out,
const QUATERNION &  q1,
const QUATERNION &  q2 
)

Dodawanie, odejmowanie, mnożenie kwaternionów.

void common::AxisToQuaternion ( QUATERNION *  Out,
const VEC3 &  Axis,
float  Angle 
)

Tworzy kwaternion na podstawie osi obrotu i kąta.

float common::CalcQuaternionAngle ( const QUATERNION &  Q  )  [inline]

Zwraca kąt obrotu jaki reprezentuje ten kwaternion.

void common::CalcQuaternionAxis ( VEC3 *  Out,
const QUATERNION &  Q 
)

Zwraca oś obrotu jaką reprezentuje ten kwaternion.

void common::Conjugate ( QUATERNION *  Out,
const QUATERNION &  q 
) [inline]

void common::Conjugate ( QUATERNION *  q  ) 

Kwaternion sprzężony do danego.

void common::Div ( QUATERNION *  Out,
const QUATERNION &  q,
float  v 
) [inline]

void common::Div ( QUATERNION *  q,
float  v 
)

float common::Dot ( const QUATERNION &  q1,
const QUATERNION &  q2 
)

Iloczyn skalarny dwóch kwaternionów.

void common::EulerAnglesToQuaternionI2O ( QUATERNION *  Out,
float  Yaw,
float  Pitch,
float  Roll 
)

Konwersja kątów Eulera na kwaternion (który obraca ze wsp. świata do obiektu, czyli interial -> object space) [a może odwrotnie?].

void common::EulerAnglesToQuaternionO2I ( QUATERNION *  Out,
float  Yaw,
float  Pitch,
float  Roll 
)

Konwersja kątów Eulera na kwaternion (który obraca ze wsp. obiektu do świata, czyli object -> interial space) [a może odwrotnie?].

void common::Exp ( QUATERNION *  Out,
const QUATERNION &  q 
)

void common::Inverse ( QUATERNION *  Out,
const QUATERNION &  q 
)

Odwrotność kwaterniona.

float common::Length ( const QUATERNION &  q  ) 

Długość kwaterniona.

float common::LengthSq ( const QUATERNION &  q  ) 

Kwadrat długości kwaterniona.

void common::Lerp ( QUATERNION *  Out,
const QUATERNION &  q1,
const QUATERNION &  q2,
float  t 
)

Interpolacja normalna kwaternionów.

void common::Log ( QUATERNION *  Out,
const QUATERNION &  q 
)

void common::Minus ( QUATERNION *  Out,
const QUATERNION &  q 
) [inline]

void common::Minus ( QUATERNION *  q  ) 

Ujemny kwaternion.

void common::Mul ( QUATERNION *  Out,
const QUATERNION &  q,
float  v 
) [inline]

void common::Mul ( QUATERNION *  q,
float  v 
)

Mnożenie i dzielenie kwaterniona przez skalar.

void common::Mul ( QUATERNION *  Out,
const QUATERNION &  q1,
const QUATERNION &  q2 
)

void common::Normalize ( QUATERNION *  InOut  ) 

void common::Normalize ( QUATERNION *  Out,
const QUATERNION &  q 
)

Normalizacja kwaternion.

QUATERNION common::operator* ( float  v,
const QUATERNION  pt 
) [inline]

QUATERNION common::operator* ( const QUATERNION  pt,
float  v 
) [inline]

QUATERNION common::operator/ ( float  v,
const QUATERNION  pt 
) [inline]

QUATERNION common::operator/ ( const QUATERNION  pt,
float  v 
) [inline]

void common::Pow ( QUATERNION *  Out,
const QUATERNION &  q,
float  t 
) [inline]

void common::Pow ( QUATERNION *  InOut,
float  t 
)

Podnieś kwaternion do potęgi.

Wykładnik 0..1 daje interpolacje kwaterniona od identycznościowego do q.

void common::QuaternionDiff ( QUATERNION *  Out,
const QUATERNION &  a,
const QUATERNION &  b 
)

Oblica "różnicę" dwóch kwaternionów reprezentującą taki obrót że a*Out = b.

To jest obliczane tak: Out = a^-1 * b, więc jeśli masz już a^-1 to nie używaj.

bool common::QuaternionEqual ( const QUATERNION &  q1,
const QUATERNION &  q2 
) [inline]

Zwraca true, jeśli podane kwaterniony są sobie mniej więcej równe.

void common::QuaternionI2OToEulerAngles ( float *  Yaw,
float *  Pitch,
float *  Roll,
const QUATERNION &  q 
)

Konwersja kwaterniona który obraca ze wsp. świata do obiektu, czyli interial -> object space, na kąty Eulera.

void common::QuaternionO2IToEulerAngles ( float *  Yaw,
float *  Pitch,
float *  Roll,
const QUATERNION &  q 
)

Konwersja kwaterniona który obraca ze wsp. obiektu do świata, czyli object -> interial space, na kąty Eulera.

void common::QuaternionRotationX ( QUATERNION *  Out,
float  a 
)

Tworzy kwaternion obracający wokół osi X.

void common::QuaternionRotationY ( QUATERNION *  Out,
float  a 
)

Tworzy kwaternion obracający wokół osi Y.

void common::QuaternionRotationZ ( QUATERNION *  Out,
float  a 
)

Tworzy kwaternion obracający wokół osi Z.

void common::QuaternionToRotationMatrix ( MATRIX *  Out,
const QUATERNION &  q 
)

Przekształca kwaternion w macierz obrotu.

void common::QuaternionTransform ( VEC3 *  Out,
const VEC3 &  p,
const QUATERNION &  q 
)

Przekształca punkt/wektor przez kwaternion obracając go o ten kwaternion.

  • To nie jest wcale super szybkie i nie przydaje się aż tak często. Lepiej sobie przekształcić kwaternion na macierz.
  • Out = q * p * q^-1

void common::RotationMatrixToQuaternion ( QUATERNION *  Out,
const MATRIX &  RotationMatrix 
)

Tworzy kwaternion na podstawie macierzy obrotu.

void common::Slerp ( QUATERNION *  Out,
const QUATERNION &  q0,
const QUATERNION &  q1,
float  t 
)

Interpolacja sferyczna kwaternionów.

Sprawdzona, daje wyniki dokładnie tekie same jak D3DXQuaternionSlerp.

void common::Squad ( QUATERNION *  Out,
const QUATERNION &  Q1,
const QUATERNION &  A,
const QUATERNION &  B,
const QUATERNION &  C,
float  t 
)

NIE TESTOWANA

void common::SquadSetup ( QUATERNION *  OutA,
QUATERNION *  OutB,
QUATERNION *  OutC,
const QUATERNION &  Q0,
const QUATERNION &  Q1,
const QUATERNION &  Q2,
const QUATERNION &  Q3 
)

NIE TESTOWANA

void common::Sub ( QUATERNION *  Out,
const QUATERNION &  q1,
const QUATERNION &  q2 
)

void common::swap ( QUATERNION &  v1,
QUATERNION &  v2 
) [inline]


Dokumentacja zmiennych

const QUATERNION common::QUATERNION_IDENTITY

const QUATERNION common::QUATERNION_ZERO


Wygenerowano Sat Mar 29 18:17:00 2008 dla CommonLib programem  doxygen 1.5.5