Les codes...

Simulation de l'effet de serre

Le programme de simulation de l'effet de serre est actuellement en pause.
Quelques images à droite et ci-dessous donnent un aperçu.

Il nous manque quelques données relatives à l'évolution temporelle des données.
En effet : nous avons les données de base correspondant à une moyenne sur 24 heures d'effet de serre, et nous cherchons à déterminer l'évolution de ces valeurs pendant ces 24 heures ( linéaire, logarithmique, exponentielle, seuillage... ).
Pour l'instant nous supposons la présence d'un seuil à partir duquel certaines données commencent leurs évolutions et nous nous penchons sur les formules physiques afin d'essayer de retrouver le type d'évolution des données.

Le programme de simulation de l'effet de serre:
Les élèves doivent changer les concentrations de gaz et voir les résultats
Effet de serre
3 modèles représentatifs:
La Terre, mais aussi...
Mars
Mars
Vénus
Vénus
Vénus devenue brûlante
(avec l'échauffement de l'atmosphère désactivée)
Vénus au sol brûlant


Courbe de Bézier à n points de contrôle

Il est possible de télécharger les fichiers zippés d'un projet utilisant le moteur dans sa version 2D et dont le but est de calculer des points d'une courbe de Bézier à n points de contrôle (avec n de 0 à 100).
Ce programme utilise l'algorithme de De Casteljau.

Les fichiers mis en ligne correspondent au moment m d'un moteur en perpétuelle évolution. Certains fichiers, en cours de modification, peuvent ainsi contenir encore quelques 'courts-circuits' ou des commentaires dans une méthode à venir.
Actuellement la possibilité d'utilisation du format d'image Bmp et d'un format Ego ( matrice sur laquelle aura lieu toutes les opérations de traitement d'image, équivalent aux formats ppm et pgm ) sont en cours de mise en place.

Une première page permet de choisir l'application à utiliser (ici seulement le générateur de la courbe de Bézier, les autres viendront par la suite).
Il suffit ensuite de placer des points de contrôle avec la souris.

Enfin, il faut cliquer sur les boutons pour pouvoir voir :

  • Un segment reliant les points de contrôle deux a deux, dans l'ordre de création (en rouge)
  • Une réglette permet de choisir le nombre de points de la courbe de Bézier à calculer (de 0 à 100 points).
  • La courbe de Bézier résultante (en jaune), en reliant les points calculés entre eux. Ainsi, plus on calcule de points plus la courbe est précise.
  • Une étape de la construction de la courbe de Bézier (points en blanc, segments en bleus). Chaque étape de la construction peut être choisie en fonction de sa profondeur grâce à des réglettes et l'on peut ainsi voir l'itération voulue de l'algorithme dans la création de la courbe de Bézier.

L'objectif était de programmer en C++ l'algorithme de De Castejau sans utiliser de récursivité et avec un seul tableau. Une fois lancé, l'algorithme détermine donc la taille du tableau puis calcule les points et les positionne à leur place. Ce tableau est suffisament grand pour contenir les points de contrôle et tous les points calculés pour pouvoir afficher n'importe quelle étape du calcul des points.
Le tout devant pouvoir reagir immédiatement et interactivement à chaque ajout, suppression ou déplacement de nouveau point de contrôle.

Enfin, j'ai arbitrairement préféré rester le plus souvent possible avec des entiers (des int) dans le calcul des points de la courbe. La perte des arrondis qui découle de ce choix donne un aspect de ligne brisée à la courbe.

Les fichiers zippès (50 Ko)
Les fichiers zippès (50Ko)

L'executable du moteur permettant de lancer
bézier ou l'enveloppe
Avec la librairie indispensable glut32.dll
Executable du moteur (164 Ko)

Une courbe calculée (en jaune)
Cliquez sur l'image pour télécharger l'executable
( avec la librairie glut32.dll nécessaire jointe dans le zip )
Une courbe calculée...


Enveloppe externe d'un nuage de points

Le moteur peut également calculer en temps réel l'enveloppe externe d'un nuage de points.

L'objectif était de mettre un algorithme de calcul d'enveloppe externe de points sous forme d'un automate.
Cet automate était initialement en trois états ( Ne rien faire, Insérer un point, Supprimer un point ) grâce à l'utilisation d'une méthode de transition d'état permettant de définir en 2 multiplications et 5 soustractions si 3 points (A, B et C) sont alignés, si pour aller de A en C en passant par B il a fallu tourner à droite ou tourner à gauche ( renvoie : ALIGNE, DROITE ou GAUCHE ).
Cette méthode est vraiment pratique et est souvent utilisée dans mes programmes. Ici, le cas ALIGNE peut être confondu avec le cas DROITE, donc la 'question' est finalement : GAUCHE ou pas ?

Ainsi, le premier automate peut être décrit par le schéma :
Un schéma un peu lourd...

Mais ce schéma est un peu 'lourd', donc je le remplace par celui-ci, plus lisible :
Schéma simplifié...

Enfin, cet automate peut donc être réduit en :
Schéma final...
puisque l'insertion et la suppression ont un caractère automatique lié au résultat de Tourne. Bien entendu, chaque appel de cette méthode sélectionne dans la liste nouveaux points concernés et sort de l'automate une fois arrivé à la fin de la liste.

Réduit au minimum, l'automate n'a finalement plus que 2 états. Dans le programme, c'est encore géré par un switch afin de pouvoir être éventuellement réutilisé avec un autre état, mais cela peut être réduit à un simple if.

Une enveloppe calculée en rouge
Cliquez sur l'image pour télécharger l'executable
( avec la librairie glut32.dll nécessaire jointe dans le zip )
Executable de l'enveloppe externe...


Et bientôt...

Bientôt, un programme de Tetris sera disponible. L'objectif est de le faire avec les moteurs développés pour le programme de simulation de l'effet de serre. Ainsi, je commence à me créer des moteurs de programmation personnels.

J'ajouterai par la suite des programmes et codes d'analyse d'image.