GL4Dummies  0.1.7
Référence du fichier gl4dq.h

fonctions de manipulation de Quaternions Plus de détails...

Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier :

Aller au code source de ce fichier.

Définitions de type

typedef float gl4dqQuaternion[4]
 

Fonctions

void gl4dqComputeScalaire (gl4dqQuaternion q)
 fonction de calcul de la partie scalaire d'un gl4dqQuaternion unitaire où seule la partie imaginaire est donnée Plus de détails...
 
void gl4dqConjugate (const gl4dqQuaternion q, gl4dqQuaternion conjugate)
 fonction de calcul du conjugué d'un gl4dqQuaternion Plus de détails...
 
void gl4dqMultiply (const gl4dqQuaternion qa, const gl4dqQuaternion qb, gl4dqQuaternion qr)
 fonction de calcul de la multiplication de deux gl4dqQuaternions Plus de détails...
 
float gl4dqMagnitude (gl4dqQuaternion q)
 fonction qui calcule la norme d'un gl4dqQuaternion Plus de détails...
 
void gl4dqNormalize (gl4dqQuaternion q)
 fonction qui transforme un gl4dqQuaternion en un gl4dqQuaternion unitaire Plus de détails...
 
void gl4dqCreatePurFromPoint (float *v, gl4dqQuaternion qr)
 fonction qui créé un gl4dqQuaternion pur à partir d'un vecteur Plus de détails...
 
void gl4dqRotatePoint (const gl4dqQuaternion q, float *vsrc, float *vdst)
 fonction qui applique une rotation sur un vecteur à l'aide d'un gl4dqQuaternion Plus de détails...
 
void gl4dqQuaternionToMatrix (const gl4dqQuaternion q, float *mat)
 fonction qui génère la matrice de rotation sur un vecteur à partir d'un gl4dqQuaternion Plus de détails...
 

Description détaillée

fonctions de manipulation de Quaternions

Auteur
Vincent Boyer boyer.nosp@m.@ai..nosp@m.univ-.nosp@m.pari.nosp@m.s8.fr
Sylvia Chalencon chale.nosp@m.ncon.nosp@m.@ai.u.nosp@m.niv-.nosp@m.paris.nosp@m.8.fr
Date
2013-2015

Définition dans le fichier gl4dq.h.

Documentation des définitions de type

◆ gl4dqQuaternion

gl4dqQuaternion

La partie scalaire est dans Quaternion[0]
La partie imaginaire i, j, k est dans Quaternion[1, 2 et 3]

Documentation des fonctions

◆ gl4dqComputeScalaire()

void gl4dqComputeScalaire ( gl4dqQuaternion  q)

fonction de calcul de la partie scalaire d'un gl4dqQuaternion unitaire où seule la partie imaginaire est donnée

Paramètres
qun quaternion
14  {
15  float t = 1.0f - (q[1] * q[1]) - (q[2] * q[2]) - (q[3] * q[3]);
16  q[0] = (t > 0) ? (float)-sqrt(t) : 0;
17 }

◆ gl4dqConjugate()

void gl4dqConjugate ( const gl4dqQuaternion  q,
gl4dqQuaternion  conjugate 
)

fonction de calcul du conjugué d'un gl4dqQuaternion

Paramètres
qun quaternion
conjugateson conjugué
19  {
20  conjugate[0] = q[0];
21  conjugate[1] = -q[1];
22  conjugate[2] = -q[2];
23  conjugate[3] = -q[3];
24 }

Référencé par gl4dqRotatePoint().

◆ gl4dqCreatePurFromPoint()

void gl4dqCreatePurFromPoint ( float *  v,
gl4dqQuaternion  qr 
)

fonction qui créé un gl4dqQuaternion pur à partir d'un vecteur

Paramètres
vun vecteur
qrle quaternion pur
50  {
51  r[0] = 0.0;
52  r[1] = in[0];
53  r[2] = in[1];
54  r[3] = in[2];
55 }

Références in().

Référencé par gl4dqRotatePoint().

◆ gl4dqMagnitude()

float gl4dqMagnitude ( gl4dqQuaternion  q)

fonction qui calcule la norme d'un gl4dqQuaternion

Paramètres
qun quaternion
35  {
36  return (float)sqrt((q[0]*q[0])+(q[1]*q[1]) +(q[2]*q[2])+(q[3]*q[3]));
37 }

Référencé par gl4dqNormalize().

◆ gl4dqMultiply()

void gl4dqMultiply ( const gl4dqQuaternion  qa,
const gl4dqQuaternion  qb,
gl4dqQuaternion  qr 
)

fonction de calcul de la multiplication de deux gl4dqQuaternions

Paramètres
qapremier quaternion
qbsecond quaternion
qrle quaternion résultant de la multiplication des deux précédents
27  {
28 
29  r[0] = qa[0]*qb[0] - qa[1]*qb[1] - qa[2]*qb[2] - qa[3]*qb[3];
30  r[1] = qa[1]*qb[0] + qa[0]*qb[1] + qa[2]*qb[3] - qa[3]*qb[2];
31  r[2] = qa[2]*qb[0] + qa[0]*qb[2] + qa[3]*qb[1] - qa[1]*qb[3];
32  r[3] = qa[3]*qb[0] + qa[0]*qb[3] + qa[1]*qb[2] - qa[2]*qb[1];
33 }

Référencé par gl4dqRotatePoint().

◆ gl4dqNormalize()

void gl4dqNormalize ( gl4dqQuaternion  q)

fonction qui transforme un gl4dqQuaternion en un gl4dqQuaternion unitaire

Paramètres
qun quaternion
39  {
40  float mag = gl4dqMagnitude(q);
41 
42  if (mag > 0.0f) {
43  q[0] /= mag;
44  q[1] /= mag;
45  q[2] /= mag;
46  q[3] /= mag;
47  }
48 }

Références gl4dqMagnitude().

Référencé par gl4daTrack().

◆ gl4dqQuaternionToMatrix()

void gl4dqQuaternionToMatrix ( const gl4dqQuaternion  q,
float *  mat 
)

fonction qui génère la matrice de rotation sur un vecteur à partir d'un gl4dqQuaternion

Paramètres
qun quaternion
matla matrice de rotation
71  {
72  float w = q[0], x = q[1], y = q[2], z = q[3];
73  mat [0] = 1 - 2*y*y -2*z*z ; mat [1] = 2*x*y + 2*w*z ; mat [2] = 2*x*z - 2*w*y ; mat [3] = 0;
74  mat [4] = 2*x*y - 2*w*z ; mat [5] = 1 - 2*x*x -2*z*z ; mat [6] = 2*y*z + 2*w*x ; mat [7] = 0;
75  mat [8] = 2*x*z + 2*w*y ; mat [9] = 2*y*z - 2*w*x ; mat [10] = 1 - 2*x*x -2*y*y ; mat [11] = 0;
76  mat [12] = 0 ; mat [13] = 0 ; mat [14] = 0 ; mat [15] = 1;
77 }

Références screen_node_t::w.

◆ gl4dqRotatePoint()

void gl4dqRotatePoint ( const gl4dqQuaternion  q,
float *  vsrc,
float *  vdst 
)

fonction qui applique une rotation sur un vecteur à l'aide d'un gl4dqQuaternion

Paramètres
qun quaternion
vsrcle vecteur source
vdstle vecteur destination
57  {
58  gl4dqQuaternion conjugate, purfromin, r, final;
59 
60  gl4dqCreatePurFromPoint(in, purfromin);
61  //gl4dqNormalize (purfromin);
62  gl4dqConjugate(q, conjugate);
63  gl4dqMultiply(q, purfromin, r);
64  gl4dqMultiply(r, conjugate, final);
65 
66  out[0] = final[1];
67  out[1] = final[2];
68  out[2] = final[3];
69 }

Références gl4dqConjugate(), gl4dqCreatePurFromPoint(), gl4dqMultiply(), et in().

gl4dqConjugate
void gl4dqConjugate(const gl4dqQuaternion q, gl4dqQuaternion conjugate)
fonction de calcul du conjugué d'un gl4dqQuaternion
Definition: gl4dq.c:19
in
static int in(void *func, void **funcList, int n)
regarde si le pointeur func est un élément du tableau funcList
Definition: gl4dhAnimeManager.c:143
gl4dqMultiply
void gl4dqMultiply(const gl4dqQuaternion qa, const gl4dqQuaternion qb, gl4dqQuaternion r)
fonction de calcul de la multiplication de deux gl4dqQuaternions
Definition: gl4dq.c:27
gl4dqMagnitude
float gl4dqMagnitude(gl4dqQuaternion q)
fonction qui calcule la norme d'un gl4dqQuaternion
Definition: gl4dq.c:35
gl4dqCreatePurFromPoint
void gl4dqCreatePurFromPoint(float *in, gl4dqQuaternion r)
fonction qui créé un gl4dqQuaternion pur à partir d'un vecteur
Definition: gl4dq.c:50
gl4dqQuaternion
float gl4dqQuaternion[4]
Definition: gl4dq.h:24