#!/usr/bin/python2.7 # -*- coding: utf-8 -*- ############################################################### # portage de planet.c from OpenGL.GL import * # exception car prefixe systematique from OpenGL.GLU import * from OpenGL.GLUT import * import sys ############################################################### # variables globales year, day = 0, 0 quadric = None ############################################################### # def init(): global quadric glClearColor (0.0, 0.0, 0.0, 0.0) glShadeModel (GL_FLAT) quadric = gluNewQuadric() gluQuadricDrawStyle(quadric, GLU_LINE) def display(): glClear (GL_COLOR_BUFFER_BIT) glColor4f (1.0, 1.0, 1.0, 1.0) glPushMatrix() gluSphere(quadric, 1.0, 20, 16) glRotatef(year, 0.0, 1.0, 0.0) glTranslatef(2.0, 0.0, 0.0) glRotatef(day, 0.0, 1.0, 0.0) gluSphere(quadric, 0.2, 10, 8) glPopMatrix() glutSwapBuffers() def reshape(width, height): glViewport(0, 0, width, height) glMatrixMode(GL_PROJECTION) glLoadIdentity() if width <= height: glOrtho(-2.5, 2.5, -2.5*height/width, 2.5*height/width, -10.0, 10.0) else: glOrtho(-2.5*width/height, 2.5*width/height, -2.5, 2.5, -10.0, 10.0) glMatrixMode(GL_MODELVIEW) def keyboard(key, x, y): global day, year if key == 'd': day = (day + 10) % 360 elif key == 'D': day = (day - 10) % 360 elif key == 'y': year = (year + 5) % 360 elif key == 'Y': year = (year - 5) % 360 elif key == '\033': sys.exit( ) glutPostRedisplay() # indispensable en Python ############################################################### # MAIN glutInit() glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA) glutCreateWindow('planet') glutReshapeWindow(512,512) glutReshapeFunc(reshape) glutDisplayFunc(display) glutKeyboardFunc(keyboard) init() glutMainLoop()