blob: df57fdd9de2e32f6e2aec918d2cd4f890e41e9dd (
plain) (
blame)
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
|
/*
* Camera.h
*
* Created on: Mar 31, 2011
* Author: jakob
*/
#ifndef CAMERA_H_
#define CAMERA_H_
#include <cmath>
#include <QtOpenGL>
#include "Vector3D.h"
#include <GL/glu.h>
namespace vhc {
/** Represente une camera, un observateur 3D. */
class Camera {
private:
/** Position de la camera. */
Vector3D position; //from position
/** Direction de vue. */
Vector3D direction; //to position + direction
/** Haut de l'ecran. */
Vector3D up;
/** Heading. (angle autour de la verticale de la camera) */
double heading; //left/right
/** Pitch. (angle autour d'horizontale de la camera) */
double pitch; //up/down
public:
Camera();
virtual ~Camera() {};
/** Applique les transformantions de cet camera au viewport OpenGl. */
void setView();
/** Ajoute l'angle donne (en radians) au heading. */
void addHeading(double h);
/** Ajoute l'angle donne (en radians) au pitch. */
void addPitch(double h);
/** Translate la camera selon le vecteur donne (en coordonnees locales de cette camera). */
void move(const Vector3D& moveVector);
/** Retourne la position en coordonnees absolues de cette camera. */
Vector3D getPosition() const;
/** Retourne le heading de cette camera.
* @see heading */
double getHeading() const;
/** Retourne le pitch de cette camera.
* @see pitch */
double getPitch() const;
};
}
#endif /* CAMERA_H_ */
|