TP3 : Système solaire

publicité
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.
Soleil
Vénus
Terre
Mars
Lune
couleur
jaune
brune
bleue
rouge
gris
diamètre
40
11
12
6
4
rotation
fixe
1.5°/ut
28°/ut
28°/ut
1°/t
distance
0
100
150
230
15/terre
révolution
fixe
1.7°/ut
1°/ut
0,6°/ut
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.
2 – Système terre-lune.
Le but est de dessiner la terre centrée sur l’origine et en rotation sur elle même à raison de 30° par unité de
temps pour simuler l’écoulement d’un jour (12*ut = 1 jour). Dans cette étape, la lune reste fixe à une distance
relative à la terre de 20 sur l’axe X.
En utilisant votre fonction dessinerSphere, écrivez la fonction systemeTerreLune(float ut) qui trace le système
terre lune dans une telle position.
ut*30°
X
20
Z
Remarque : Le rendu de la terre sera fait dans un premier temps avec un matériau homogène. Aussi, la rotation
de la terre ne sera visible qu’en tracé « fil de fer ». La suite du TP consistera à plaquer l’image de la terre avec
les océans et continents et rendra visible cette rotation en rendu « plein ».
3 – Placage de texture
Sur le lien jeux d’images de http://www.lsis.org/bulotr/gii , récupérez les 2 images de la terre et de la lune et
plaquez les en mélangeant ces textures avec le rendu éclairage d’un matériaux blanc.
Un complément « fichiersImage.c » est disponible sur le site pour lire des images au format pgm ou ppm et
pour créer une structure de données capable de stocker ces images (voir description dans le fichier).
L’image sera chargée dans une matrice où les cases sont des GLubyte (octets non signés) :
4 – Système solaire
a) On souhaite maintenant positionner le système terre-lune en orbite autours du soleil.
Ce système terre-lune est soumis à deux rotations :
- Une rotation autours d’un axe se trouvant non pas au centre de la terre, mais à la distance 6 de ce centre (point
rouge dans le schéma ci-dessous) et à raison de 13° par unité de temps (simulation du mois lunaire)
- Par ailleurs, le système terre lune est en orbite à une distance de 100 par rapport au soleil (origine) avec une
vitesse de révolution de 1° par unité de temps (simulation du positionnement annuel).
En utilisant la fonction systemeTerreLune construisez la scène illustrant ce système en mouvement autours du
soleil.
ut*13°
100
ut*1°
b) placez les autres planètes en orbite autours du soleil
Remarque : Pour simuler l’éclairage des planètes par le soleil, on mettra une lumière à l’origine de la scène.
Toutefois, il faudra aussi ajouter temporairement une lumière extérieure pour éclairer la sphère soleil le temps
du tracé de celle-ci (sinon, le rendu du soleil donnera la sensation d’un disque plat)
Téléchargement