This commit is contained in:
		
							parent
							
								
									593ff2075e
								
							
						
					
					
						commit
						abc4d1976c
					
				
					 3 changed files with 45 additions and 75 deletions
				
			
		| 
						 | 
					@ -10,4 +10,6 @@ steps:
 | 
				
			||||||
- name: python lint
 | 
					- name: python lint
 | 
				
			||||||
  image: cytopia/pylint
 | 
					  image: cytopia/pylint
 | 
				
			||||||
  commands:
 | 
					  commands:
 | 
				
			||||||
 | 
					  - apk add --no-cache py3-pip
 | 
				
			||||||
 | 
					  - pip3 install -r requirements.txt
 | 
				
			||||||
  - find . -type f -name "*.py" | xargs pylint
 | 
					  - find . -type f -name "*.py" | xargs pylint
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										117
									
								
								py_hypercube.py
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								py_hypercube.py
									
									
									
									
									
								
							| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/usr/bin/python
 | 
					#!/usr/bin/python
 | 
				
			||||||
# -*- coding: iso8859-15 -*-
 | 
					# -*- coding: iso8859-15 -*-
 | 
				
			||||||
# projection variable d'un hypercube
 | 
					""" projection variable d'un hypercube"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# pour l'interaction avec le système
 | 
					# pour l'interaction avec le système
 | 
				
			||||||
# pour sqrt() et pow()
 | 
					# pour sqrt() et pow()
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,9 @@ import math
 | 
				
			||||||
# pour les nombres aléatoires
 | 
					# pour les nombres aléatoires
 | 
				
			||||||
from random import randint
 | 
					from random import randint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import pygame as pg
 | 
				
			||||||
 | 
					from pygame.locals import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# importe tout ce qui est contenu dans le package OpenGL
 | 
					# importe tout ce qui est contenu dans le package OpenGL
 | 
				
			||||||
from OpenGL.GL import *
 | 
					from OpenGL.GL import *
 | 
				
			||||||
# GLU première couche au dessus d'OpenGL
 | 
					# GLU première couche au dessus d'OpenGL
 | 
				
			||||||
| 
						 | 
					@ -83,13 +86,7 @@ def draw():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # couleur par défaut (le fond entre autre)
 | 
					    # couleur par défaut (le fond entre autre)
 | 
				
			||||||
    glClearColor(0.0, 0.0, 0.0, 0.0)
 | 
					    glClearColor(0.0, 0.0, 0.0, 0.0)
 | 
				
			||||||
    glClear(GL_COLOR_BUFFER_BIT)
 | 
					    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    glLoadIdentity()
 | 
					 | 
				
			||||||
    # positionne la vue
 | 
					 | 
				
			||||||
    gluLookAt(x, y, z,
 | 
					 | 
				
			||||||
              cx, cy, cz,
 | 
					 | 
				
			||||||
              0.0, 1.0, 0.0)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if frepere == 1:
 | 
					    if frepere == 1:
 | 
				
			||||||
        draw_repere()
 | 
					        draw_repere()
 | 
				
			||||||
| 
						 | 
					@ -103,43 +100,47 @@ def draw():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    draw_hypercube(varAnim[0], varAnim[1], varAnim[2], varAnim[3])
 | 
					    draw_hypercube(varAnim[0], varAnim[1], varAnim[2], varAnim[3])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # double buffer, on dessine en mémoire et on affiche quand c'est pret
 | 
					 | 
				
			||||||
    glutSwapBuffers()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# gestion du clavier
 | 
					# gestion du clavier
 | 
				
			||||||
def keyboard(key, x, y):
 | 
					def keyboard(key):
 | 
				
			||||||
    """ gère les touches normales"""
 | 
					    """ gère les touches normales"""
 | 
				
			||||||
    global frepere
 | 
					    global frepere
 | 
				
			||||||
    global flagsAnim
 | 
					    global flagsAnim
 | 
				
			||||||
    global fullscreen
 | 
					    global fullscreen
 | 
				
			||||||
 | 
					    global cx, cy, cz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key == chr(27):
 | 
					    if key == K_ESCAPE:
 | 
				
			||||||
        sys.exit(0)
 | 
					        pg.quit()
 | 
				
			||||||
 | 
					        quit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key == 'f':
 | 
					    if key == K_f:
 | 
				
			||||||
        if fullscreen:
 | 
					        pass
 | 
				
			||||||
            glutReshapeWindow(640, 480)
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            glutFullScreen()
 | 
					 | 
				
			||||||
        fullscreen = 1 - fullscreen
 | 
					        fullscreen = 1 - fullscreen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key == 'a':
 | 
					    if key == K_a:
 | 
				
			||||||
        frepere = 1 - frepere
 | 
					        frepere = 1 - frepere
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key == 'u':
 | 
					    if key == K_u:
 | 
				
			||||||
        flagsAnim[0] = 1 - flagsAnim[0]
 | 
					        flagsAnim[0] = 1 - flagsAnim[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key == 'i':
 | 
					    if key == K_i:
 | 
				
			||||||
        flagsAnim[1] = 1 - flagsAnim[1]
 | 
					        flagsAnim[1] = 1 - flagsAnim[1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key == 'o':
 | 
					    if key == K_o:
 | 
				
			||||||
        flagsAnim[2] = 1 - flagsAnim[2]
 | 
					        flagsAnim[2] = 1 - flagsAnim[2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if key == 'p':
 | 
					    if key == K_p:
 | 
				
			||||||
        flagsAnim[3] = 1 - flagsAnim[3]
 | 
					        flagsAnim[3] = 1 - flagsAnim[3]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    glutPostRedisplay()
 | 
					    if key == K_LEFT:
 | 
				
			||||||
 | 
					        cx = cx - 1
 | 
				
			||||||
 | 
					    elif key == K_RIGHT:
 | 
				
			||||||
 | 
					        cx = cx + 1
 | 
				
			||||||
 | 
					    elif key == K_UP:
 | 
				
			||||||
 | 
					        cy = cy + 1
 | 
				
			||||||
 | 
					    elif key == K_DOWN:
 | 
				
			||||||
 | 
					        cy = cy - 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def draw_line(x1, y1, z1, x2, y2, z2):
 | 
					def draw_line(x1, y1, z1, x2, y2, z2):
 | 
				
			||||||
    """ dessine une ligne"""
 | 
					    """ dessine une ligne"""
 | 
				
			||||||
| 
						 | 
					@ -149,6 +150,7 @@ def draw_line(x1, y1, z1, x2, y2, z2):
 | 
				
			||||||
    glVertex3f(x2, y2, z2)
 | 
					    glVertex3f(x2, y2, z2)
 | 
				
			||||||
    glEnd()
 | 
					    glEnd()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def draw_repere():
 | 
					def draw_repere():
 | 
				
			||||||
    """ dessine le repère orthogonal"""
 | 
					    """ dessine le repère orthogonal"""
 | 
				
			||||||
    glBegin(GL_LINES)
 | 
					    glBegin(GL_LINES)
 | 
				
			||||||
| 
						 | 
					@ -163,6 +165,7 @@ def draw_repere():
 | 
				
			||||||
    glVertex3i(0, 0, 1)
 | 
					    glVertex3i(0, 0, 1)
 | 
				
			||||||
    glEnd()
 | 
					    glEnd()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def draw_hypercube(a1, b1, c1, d1):
 | 
					def draw_hypercube(a1, b1, c1, d1):
 | 
				
			||||||
    """dessine l'hypercube """
 | 
					    """dessine l'hypercube """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -299,56 +302,20 @@ def draw_hypercube(a1, b1, c1, d1):
 | 
				
			||||||
    glEnd()
 | 
					    glEnd()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def specialkey(key, kx, ky):
 | 
					 | 
				
			||||||
    """ gère les touches spéciales"""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    global cx, cy, cz
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if key == GLUT_KEY_LEFT:
 | 
					 | 
				
			||||||
        cx = cx - 1
 | 
					 | 
				
			||||||
    elif key == GLUT_KEY_RIGHT:
 | 
					 | 
				
			||||||
        cx = cx + 1
 | 
					 | 
				
			||||||
    elif key == GLUT_KEY_UP:
 | 
					 | 
				
			||||||
        cy = cy + 1
 | 
					 | 
				
			||||||
    elif key == GLUT_KEY_DOWN:
 | 
					 | 
				
			||||||
        cy = cy - 1
 | 
					 | 
				
			||||||
    glutPostRedisplay()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def mouse_move(mx, my):
 | 
					 | 
				
			||||||
    """ gère les mouvements de la souris lorqu'aucun bouton n'est enfoncé """
 | 
					 | 
				
			||||||
    pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def mouse_move_button(mx, my):
 | 
					 | 
				
			||||||
    """ gère les mouvements de la souris lorqu'au moins un bouton est enfoncé """
 | 
					 | 
				
			||||||
    pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def mouse_button(boutton, etat, mx, my):
 | 
					 | 
				
			||||||
    """ gère les appuis et relachement de bouttons de la souris """
 | 
					 | 
				
			||||||
    pass
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# main
 | 
					# main
 | 
				
			||||||
# initialisation
 | 
					pg.init()
 | 
				
			||||||
glutInit([])
 | 
					windowSize = (1152, 720)
 | 
				
			||||||
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE)
 | 
					pg.display.set_mode(windowSize, DOUBLEBUF | OPENGL)
 | 
				
			||||||
glutInitWindowSize(640,480)
 | 
					 | 
				
			||||||
glutCreateWindow(sys.argv[0])
 | 
					 | 
				
			||||||
# glutFullScreen()
 | 
					 | 
				
			||||||
glutDisplayFunc(draw)
 | 
					 | 
				
			||||||
glutKeyboardFunc(keyboard)
 | 
					 | 
				
			||||||
glutSpecialFunc(specialkey)
 | 
					 | 
				
			||||||
glutPassiveMotionFunc(mouse_move)
 | 
					 | 
				
			||||||
glutMotionFunc(mouse_move_button)
 | 
					 | 
				
			||||||
glutMouseFunc(mouse_button)
 | 
					 | 
				
			||||||
glutIdleFunc(draw)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
glMatrixMode(GL_PROJECTION)
 | 
					# setup PoV
 | 
				
			||||||
glLoadIdentity()
 | 
					gluPerspective(60, (windowSize[0]/windowSize[1]), 0.1, 100.0)
 | 
				
			||||||
glOrtho(-5, 5, -5, 5, -5, 5)
 | 
					 | 
				
			||||||
glMatrixMode(GL_MODELVIEW)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# boucle glut, gère les évènements, et appèle draw()
 | 
					glTranslatef(0.0, 0.0, -5)
 | 
				
			||||||
glutMainLoop()
 | 
					
 | 
				
			||||||
 | 
					while True:
 | 
				
			||||||
 | 
					    for event in pg.event.get():
 | 
				
			||||||
 | 
					        if event.type == pg.KEYDOWN:
 | 
				
			||||||
 | 
					            keyboard(event.key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    draw()
 | 
				
			||||||
 | 
					    pg.display.flip()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					pygame
 | 
				
			||||||
		Loading…
	
		Reference in a new issue