Le code source du Simulateur

Licence libre open source.

Ce logiciel est distribué gratuitement, code source compris.
Son usage doit rester culturel et libre.
Il ne peut être incorporé dans un projet commercial

J’adhère à la philosophie de Richard Stallman et du projet GNU / Linux

Les utilisateurs peuvent librement soutenir le Simulateur Astronomique sur :
IBAN : BE22 0004 1032 4447
BIC : BPOTBEB1
Sans aucune obligation.

La programmation est l'activité à la base de l'informatique.
Elle confère à celui qui la pratique le contrôle total de la machine.

Programmer est une activité intellectuelle intense et passionnante, que je pratique depuis l’âge de 12 ans.

Nos ordinateurs ne fonctionneraient pas si quelqu'un n'avait pas préalablement écrit les programmes qui les animent.

Au contraire des jeux d'échecs ou de dames, la programmation laisse un résultat concret une fois terminée:
Un logiciel utilisable.

C'est pour partager cette passion pour la programmation que j'en révèle les sources.

Ce code permet d’inclure l'applet dans votre site web :

<APPLET code="astro.Simulateur.class" name="Simulateur" codebase="http://www.sogedima.be/java/" width="1000" height="700">
 <B>Votre navigateur n'est pas compatible Java.</B>
</APPLET>

Aussi facilement qu'une image.

Les passionnés de programmation reconnaîtront, dans le schéma qui suit, une implémentation du Modèle Vue Contrôleur.

  • Le modèle est la classe éphémérides.
  • La vue est l'objet Lune, qui propose les graphes illustrant les variables calculées par les éphémérides.
  • Le Simulateur contrôle les actions de l'utilisateur.
    Il manipule les éphémérides et modifie l'affichage des graphes de l'objet Lune.
Le Simulateur C'est le contrôleur.
Il définit l'applet, l'interface (menus, boutons, champ date)
Il gère la Lune, le planétarium et le saros.
Les éphémérides

Les éphémérides sont le cerveau du simulateur.

C'est le modèle.

Elles reçoivent une date, sur base de laquelle elles calculent les paramètres orbitaux des astres et objets affichés dans les graphes.

La classe Lune devenait un peu lourde, elle contenait à la fois :
  • Les calculs astronomiques basés sur la date, désormais exportés dans les éphémérides.
  • Les méthodes d'affichage des graphes (vue).

J'ai donc éjecté tous les calculs astronomiques dans une classe aveugle: les éphémérides.
Cette classe effectue tous les calculs. Elle hérite du GregorianCalendar.

L'interface contenue dans Simulateur.java les positionne et la déplace sur la ligne du temps.
Outre le GregorianCalendar, elles calculent aussi la phase de la Lune, du noeud, de Mercure, Vénus, la Terre, Mars, la précession des équinoxes, …

Elles n'effectuent par contre aucune action interactive ni ne dessinent à aucun schéma à l'écran.

La classe éphémérides fournit à la classe Lune toutes les variables dont elle a besoin pour s'afficher.

Le test des éphémérides

Puisque les éphémérides sont le cerveau du simulateur, il faut s'assurer de l'exactitude des calculs qui y sont programmés par des tests en JUnit 4.

Programmer ne suffit pas, il faut aussi tester.
Les tests positionnent les éphémérides à des dates-clef (transit de Vénus, de Mercure, oppositions martiennes, éclipses, …) puisées dans Wikipédia,
Pour s'assurer que l'astre testé soit bien à la bonne position.

La Lune

Cette classe exécute les différents graphes selon les données calculées par le planétarium.
Elle le consulte pour savoir comment dessiner les graphiques:

  • Face visible
  • Face cachée
  • Horloge
  • Orbites synodique et tropique de la Lune
  • Déclinaisons et analemme
  • Panorama
  • Terre vue de la Lune
  • Marées, Marnage
  • Saisons
  • Zéniths
  • Planisphère (zéniths)
  • Hémisphères
  • Saros
Le Saros

Le saros est le cycle des éclipses. Il recommence toutes les 223 lunaisons.
La classe Saros calcule les paramètres des 223 pleines lunes du saros dont on lui confie le numéro.

Chaque saros reçoit un n° depuis le début du saros 136 pris comme point d'origine.

Angle

Cette classe permet d'ajouter et de soustraire des angles à l'infini, tout en restant dans un intervalle 0 .. 2PI
Elle gère également les conversions Radians / Degrés.
Les degrés sont arrondis à l'unité. Ils ne servent qu'aux affichages.

Les calculs se font toujours en radians.
Les radians ne sont jamais affichés à l'utilisateur.

La file des graphes Le simulateur peut afficher quatre graphes simultanément, mais est prévu pour en gérer beaucoup plus.
Chaque graphe est identifié par une lettre:
  • a: Face visible de la Lune
  • b: Orbite lunaire
  • c: Horloge
  • d: Déclinaisons
  • e: Panorama
  • f: Face cachée de la Lune
  • g: Saisons
  • h: Marées
  • i: Marnage
  • j: Terre

Lorsque l'utilisateur demande un graphe, celui-ci est affiché en haut à gauche.
Concrètement, la file est une suite de quatre lettres.
Chaque fois que l'utilisateur demande un graphe au menu déroulant, il ajoute une lettre à la file:

Chaîne initiale Lettre ajoutée Chaîne finale
marc p pmar
marc a amrc

  • Si la lettre à ajouter était déjà dans la chaîne, elle est déplacée en première position.
  • Si la lettre à ajouter n'était pas dans la chaîne, elle est ajoutée à gauche.
    Les autres lettres reculent vers la droite.
    La lettre de droite est perdue.

La file des graphes veille donc à ce que le même graphe ne soit jamais affiché deux fois.

L’astre Une classe pour trier les astres par ordre d’éloignement de la Terre dans une ArrayList.
Le résultat est affiché dans le graphe des saisons, lorsque maximisé et dé-zoomé entre 30 et 60 %
Le JColorButton
Une classe pour m'amuser !
Le bouton change de couleur lorsqu'on le survole ou qu'on le clique.

  • Blanc au repos.
  • Vert si on peut le cliquer isEnabled() lorsque la souris passe dessus.
  • Rouge si on ne peut pas le cliquer, lorsque la souris passe dessus.
  • Jaune lorsqu'on l'a cliqué.
Le simulateur existe en plusieurs langues.
Si vous êtes natif d'une de ces langues, ou la maîtrisez convenablement, vous pouvez vous procurer le fichier d'expressions ci-dessous et me le renvoyer corrigé sur christian(point)mascart(arobase)demosthene(point)be.

Vous pouvez aussi proposer une traduction dans une autre langue, que j'incorporerai au Simulateur.

Merci !

Simulateur :

Classe Lune :

Le code source ne contient aucune expression.
Celles-ci sont externalisées dans des Resource Bundle que le simulateur charge selon la langue de l'utilisateur.

Ces fichiers, à l'extension .properties, sont de simples fichiers textes.
Pour les visionner sous Windows, donnez-leur l'extension .TXT

Ils fonctionnent selon le principe

clef = valeur

Il ne faut jamais modifier la clef, ni effacer une ligne.
Seule la valeur à droite du signe = doit être traduite.

Ces quelques images viennent illustrer les graphes.
Elles sont chargées au démarrage de l'applet.

 

Le simulateur astronomique est rédigé en Java sous Eclipse, tournant dans l'environnement Linux UBUNTU.

Eclipse permet notamment de rédiger automatiquement la documentation complète des objets.