-
Notifications
You must be signed in to change notification settings - Fork 1
/
camera.py
62 lines (50 loc) · 1.48 KB
/
camera.py
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
# -*- coding: utf-8 -*-
"""
Created on Fri Aug 14 17:28:01 2015
@author: Maxime
"""
from OpenGL.GL import *
from OpenGL.GLU import *
class Camera:
"""
Cette classe permettra de contrôler le point de vue du cube à tout
moment de l'affichage 3D
"""
def __init__(self):
""" Fonction appelée lors de la création de la caméra """
self.x, self.y, self.z = 0, 0, 0
self.rotX, self.rotY, self.rotZ = 0, 0, 0
return
def getPosition(self):
return(self.x, self.y, self.z)
def getRotation(self):
return(self.rotX, self.rotY, self.rotZ)
def increasePosition(self, dx, dy, dz):
"""
Déplace la caméra par translation, en réalité on translate l'espace
dans le sens opposé pour donner l'impression de mouvement
"""
self.x -= dx
self.y -= dy
self.z -= dz
return
def increaseRotation(self, dPitch, dYaw, dRoll):
""" Pivote la caméra par rotation suivant les angles d'Euler (en degrés) """
self.rotX -= dPitch
self.rotY -= dYaw
self.rotZ -= dRoll
return
def move(self):
glTranslatef(self.x, self.y, self.z)
return
def rotate(self):
glRotatef(self.rotX, 1, 0, 0)
glRotatef(self.rotY, 0, 1, 0)
glRotatef(self.rotZ, 0, 0, 1)
return
def update(self):
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
self.move()
self.rotate()
return