1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#ifndef SIMPLE_CAMERA_GL3_H
#define SIMPLE_CAMERA_GL3_H
#define GL3_PROTOTYPES 1
#include <GL3/gl3.h>
#include <math.h>
#include <SDL/SDL.h>
#include "vecteur3f.h"
#include "matrice3f.h"
#include "Matrice4.h"
class SimpleCameraGl3{
public:
SimpleCameraGl3();
SimpleCameraGl3(const Vecteur3f & position , float theta, float phi, float rouli);
SimpleCameraGl3(const SimpleCameraGl3 & camera);
virtual ~SimpleCameraGl3();
void see(Matrice4 & matriceModelview);
void setAll(const Vecteur3f & position, float theta, float phi, float rouli);
void setPosition(const Vecteur3f & position);
void setPosition(float x, float y, float z);
void setAngles(float theta, float phi,float rouli);
void setTheta(float theta);
void setPhi(float phi);
void setRouli(float rouli);
void setWindowID(SDL_WindowID id);
void move(const Vecteur3f & dm); void moveVisee(float dl);
void moveGauche(float dl);
void turnUp(float dPhi);
void turnDown(float dPhi);
void turnRight(float dTheta);
void turnLeft(float dTheta);
void addTheta(float dTheta);
void addPhi(float dPhi);
void addRouli(float dRouli);
void rotation(float dTheta, float dPhi,float dRouli);
Vecteur3f getPosition() const;
Vecteur3f getVisee();
Vecteur3f getUp();
Vecteur3f getPlanGauche();
float getTheta() const;
float getPhi() const;
float getRouli() const;
void modeFPS(float mouseX, float mouseY, float midWidth, float midHeight, float coefSensibiliteX = 1.0, float coefSensibiliteY = 1.0, float phiMin = -80.0, float phiMax = 80.0);
SimpleCameraGl3 & operator = (const SimpleCameraGl3 & camera);
private:
void copyCamera(const SimpleCameraGl3 & camera); void initialisation(const Vecteur3f & position, float theta, float phi, float rouli);
void updateCameraGl3();
///position de la caméra
Vecteur3f p_position; ///angle d'orientation de la caméra (plan xOy) en radian
float p_theta; ///angle d'orientation de la caméra (plan xOz) en radian
float p_phi; ///angle d'orientation de la caméra (plan yOz) en radian
float p_rouli;
Vecteur3f p_visee;
Vecteur3f p_up;
Vecteur3f p_planGauche;
///id de la fenêtre de la caméra
SDL_WindowID p_windowId; ///matrice de rotation de la caméra (pour pouvoir la déplacée facilement)
Matrice3f p_matriceRotation;
};
#endif
|