TP3 : Système solaire
On se propose de visualiser le mouvement (très simplifié) de quelques planètes du système solaire. Le centre du
système solaire sera situé à l’origine et les planètes seront animées par deux mouvements de rotation :
- la rotation sur elles-mêmes (autour de Y)
- l’orbite assimilée à un cercle dans le plan XOZ
Les valeurs ci-dessous ne sont pas « réalistes » mais permettront d’obtenir une visualisation pédagogique des
mouvements planétaires.
couleur diamètre rotation distance révolution
Soleil jaune 40 fixe 0 fixe
Vénus brune 11 1.5°/ut 100 1.7°/ut
Terre bleue 12 28°/ut 150 1°/ut
Mars rouge 6 28°/ut 230 0,6°/ut
Lune gris 4 1°/t 15/terre 1°/ut
Le temps sera une variable globale TU (temps universel) initialisée à 0 et qui sera incrémentée (ut=unité de
temps) en appuyant sur la touche <entrée> (on obtiendra une animation en conservant la touche <entrée>
enfoncée). Chaque planète sera représentée par une fonction de tracé qui oriente et positionne la planète sur
l’orbite en fonction de la valeur de TU.
On pourra « naviguer » dans ce système solaire avec les 4 flèches. Les menus permettront de modifier le
contexte d’affichage (plein/arrête, etc. au choix de votre imagination).
1 - Tracé d’une sphère.
Méthode :
- Définir le type Point3D comme un tableau de 3 flottants (les 3 coordonnées)
- Définir deux constantes de 32 Parallèles et 64 Méridiens
- Déclarer une matrice sphere[Parallèles][Méridiens]
- Initialiser la matrice avec les sommets se trouvant à chaque intersection d’un
méridien et d’un parallèle pour une sphère de rayon 1 (dans le cas des pôles, il y
aura 64 fois les mêmes coordonnées).
- On dispose maintenant d’une sphère « discrète » que l’on se propose de tracer en l'approximant par des
quadrilatères. Pour cela, considérez chaque quadruplet de sommets voisins comme un quadrilatère et
tracez-le
- On obtient une sphère à facettes (utilisez une représentation fil de fer dans un premier temps pour
contrôler le résultat)
- Il suffira d’une homothétie pour adapter cette sphère au diamètre d’une planète.
Pour gérer un éclairage, il faut définir une normale en chaque sommet. Il se trouve que, dans le cas de la
sphère unité centrée sur l’origine, les coordonnées de chaque sommet (point 3D) sont aussi ceux de la normale
de longueur 1 (vecteur reliant l’origine au sommet)
- On pourra utiliser la matrice sommet[Parallèles][Méridiens] comme matrice des normales
- Comme on appliquera une homothétie pour chaque planète, il faudra activer :
glEnable(GL_NORMALIZE)
- On pourra aussi utiliser un modèle de rendu lissé pour le tracé de la sphère :
glShadeModel(GL_SMOOTH)
Dans un premier temps, on prendra un matériau simple (par exemple bleuté pour la terre et gris pour la lune) et
on pourra placer un éclairage à droite de la caméra pour en tester le rendu.