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

fonctions de manipulation du repère caméra Plus de détails...

#include "gl4dq.h"
Graphe des dépendances par inclusion de gl4da.h:
Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier :

Aller au code source de ce fichier.

Structures de données

struct  gl4daArcball
 

Définitions de type

typedef struct gl4daArcball gl4daArcball
 

Fonctions

void gl4daMapToSphere (gl4daArcball *a, int x, int y, float *pointSphere)
 fonction de calcul des coordonnées d'un oint écran sur la sphère Plus de détails...
 
void gl4daResize (gl4daArcball *a, int w, int h)
 fonction à appeler au resize de la fenêtre Plus de détails...
 
void gl4daInit (gl4daArcball *a, int x, int y)
 fonction qui initialise la position de l'arcball Plus de détails...
 
void gl4daTrack (gl4daArcball *a, int x, int y, float *quat)
 fonction qui met à jour le quaternion en fonction du déplacement de la souris Plus de détails...
 

Description détaillée

fonctions de manipulation du repère caméra

Auteur
Sylvia Chalençon chale.nosp@m.ncon.nosp@m.@ai.u.nosp@m.niv-.nosp@m.paris.nosp@m.8.fr
Date
2017

Définition dans le fichier gl4da.h.

Documentation des définitions de type

◆ gl4daArcball

m_center stocke le centre de l'écran
m_radius rayon de la sphère par rapport à l'écran m_position est la position de l'arcball

Documentation des fonctions

◆ gl4daInit()

void gl4daInit ( gl4daArcball a,
int  x,
int  y 
)

fonction qui initialise la position de l'arcball

Paramètres
aarcball
xabscisse de la souris dans la fenêtre
yordonnée de la souris dans la fenêtre
37  {
38  gl4daMapToSphere (a, x, y, a->position);
39 }

Références gl4daMapToSphere(), et gl4daArcball::position.

◆ gl4daMapToSphere()

void gl4daMapToSphere ( gl4daArcball a,
int  x,
int  y,
float *  pointSphere 
)

fonction de calcul des coordonnées d'un oint écran sur la sphère

Paramètres
aarcball
xabscisse du point à l'écran
yordonnée du point à l'écran
pointSpherepoint qui va recevoir les coordonnées du point sur la sphère
12  {
13  float p [2];
14  p[0]= (x - a->center[0]) /a->radius;
15  p[1]= (a->center[1] - y) /a->radius;
16 
17  float d2 = (p[0]*p[0]) + (p[1]*p[1]);
18  if (d2 > 1.0f) {
19  float sqrtd2 = sqrtf (d2);
20  pointSphere[0] = p[0]/ sqrtd2;
21  pointSphere[1] = p[1]/ sqrtd2;
22  pointSphere[2] = 0.0f;
23  }
24  else{
25  pointSphere[0] = p[0];
26  pointSphere[1] = p[1];
27  pointSphere[2] = sqrtf (1.0f - d2);
28  }
29 }

Références gl4daArcball::center, et gl4daArcball::radius.

Référencé par gl4daInit(), et gl4daTrack().

◆ gl4daResize()

void gl4daResize ( gl4daArcball a,
int  w,
int  h 
)

fonction à appeler au resize de la fenêtre

Paramètres
aarcball
wnouvelle largeur de la fenêtre
hnouvelle hauteur de la fenêtre
31  {
32  a->center[0] = 0.5f * w;
33  a->center[1] = 0.5f * h;
34  a->radius = 0.5f * (float)fmax (w, h);
35 }

Références gl4daArcball::center, et gl4daArcball::radius.

◆ gl4daTrack()

void gl4daTrack ( gl4daArcball a,
int  x,
int  y,
float *  quat 
)

fonction qui met à jour le quaternion en fonction du déplacement de la souris

Paramètres
aarcball
xabscisse de la souris dans la fenêtre
yordonnée de la souris dans la fenêtre
quatquaternion mis à jour
41  {
42  float p2 [3];
43  gl4daMapToSphere (a, x, y, p2);
44  float crossProdPositionP2 [3];
45  crossProdPositionP2 [0] = a->position[1] * p2[2] - a->position[2] * p2[1];
46  crossProdPositionP2 [1] = a->position[2] * p2[0] - a->position[0] * p2[2];
47  crossProdPositionP2 [2] = a->position[0] * p2[1] - a->position[1] * p2[0];
48 
49  float dotProdPositionP2 = a->position[0] * p2[0] + a->position[1] * p2[1] + a->position[2] * p2[2];
50  quat[0] = 0.5f * dotProdPositionP2;
51  quat[1] = crossProdPositionP2 [0];
52  quat[2] = crossProdPositionP2 [1];
53  quat[3] = crossProdPositionP2 [2];
54  gl4dqNormalize (quat);
55 }

Références gl4daMapToSphere(), gl4dqNormalize(), et gl4daArcball::position.

gl4dqNormalize
void gl4dqNormalize(gl4dqQuaternion q)
fonction qui transforme un gl4dqQuaternion en un gl4dqQuaternion unitaire
Definition: gl4dq.c:39
gl4daMapToSphere
void gl4daMapToSphere(gl4daArcball *a, int x, int y, float *pointSphere)
fonction de calcul des coordonnées d'un oint écran sur la sphère
Definition: gl4da.c:12
gl4daArcball::radius
float radius
Definition: gl4da.h:29
gl4daArcball::position
float position[3]
Definition: gl4da.h:30
gl4daArcball::center
float center[2]
Definition: gl4da.h:28