Solar, le système Solaire en Python sur NumWorks, TI, Casio
Posted: 09 Nov 2020, 14:50
Si d'une façon ou d'une autre tu es passé·e dans un collège ou lycée au milieu des années 1990, peut-être te souviens-tu du logiciel PC Univers également connu sous le nom de Orbits : voyage à travers le système solaire, la banque de données sur le système solaire, dont on retrouvait une copie sur la plupart des ordinateurs 286/386/486 laissés en accès libre.
Sorti en 1991, le logiciel était distribué en France par Nathan Logiciels, éditeur qui s'était popularisé la décennie précédente sous le nom de Cédic Nathan dans le contexte du plan IPT (Informatique Pour Tous) avec les microordinateurs Thomson MO5 et TO7.
Il s'agissait en fait d'une francisation du logiciel américain Orbits : Voyage Through the Solar System par WinterTech.
Sorti en 1991, le logiciel était distribué en France par Nathan Logiciels, éditeur qui s'était popularisé la décennie précédente sous le nom de Cédic Nathan dans le contexte du plan IPT (Informatique Pour Tous) avec les microordinateurs Thomson MO5 et TO7.
Il s'agissait en fait d'une francisation du logiciel américain Orbits : Voyage Through the Solar System par WinterTech.
Jil Saint-Martin et Emmy Vadon débutent l'enseignement de spécialité spécialité NSI (Numérique et Sciences Informatiques) en Première au lycée Louis Pasteur d'Avignon.
Leurs enseignants exigeants leur ont déjà demandé de concevoir et rendre pour les congés de Toussaint un premier projet Python complet sur calculatrice NumWorks.
Grâce à Jil et Emmy, voici donc dès maintenant la nouvelle référence à installer sur toutes les calculatrices NumWorks : Solar : une brève navigation dans l'espace sur Python !
Solar est donc une banque de données sur le système solaire, comparable à PC Univers.
Elle bénéficie toutefois d'une bien meilleure intuitivité et interactivité. Pas d'horrible menu de haut d'écran à dérouler et lire ici, tout se contrôle avec les touches fléchées du clavier, avec un retour visuel immédiat.
Flèches gauche et droite pour choisir son étoile ou planète alors mise en surbrillance, et flèches haut et bas pour en faire défiler les différentes propriétés.
Près de 30 ans après Solar a également le gros avantage de bénéficier de données à jour, c'est-à-dire que Gil et Emmy se sont donné la peine de supprimer tout ce qui concernait Pluton.
Non plus sérieusement aux âmes bien nées la valeur n'attend point le nombre des années, toutes nos félicitations à Jil et Emmy qui ont su relever des défis ambitieux et développer de belles capacités et compétences. On peut retenir entre autres :
Elle bénéficie toutefois d'une bien meilleure intuitivité et interactivité. Pas d'horrible menu de haut d'écran à dérouler et lire ici, tout se contrôle avec les touches fléchées du clavier, avec un retour visuel immédiat.
Flèches gauche et droite pour choisir son étoile ou planète alors mise en surbrillance, et flèches haut et bas pour en faire défiler les différentes propriétés.
Près de 30 ans après Solar a également le gros avantage de bénéficier de données à jour, c'est-à-dire que Gil et Emmy se sont donné la peine de supprimer tout ce qui concernait Pluton.
Non plus sérieusement aux âmes bien nées la valeur n'attend point le nombre des années, toutes nos félicitations à Jil et Emmy qui ont su relever des défis ambitieux et développer de belles capacités et compétences. On peut retenir entre autres :
- déjà de base des qualités artistiques et graphiques indéniables
- une belle maîtrise du codage des couleurs RVB, superbement exploitée ici dans le contexte des dégradés
- un beau travail de recherche sur le tracé de cercles dans le contexte de la géométrie et du théorème de Pythagore (aucune fonction en ce sens n'étant actuellement fournie par la bibliothèque de tracé par pixels kandinsky de la NumWorks), basé sur le travail de Philippe Moutou, avec des fonctions soigneusement calibrées pour ne pas laisser de trous dus aux arrondis lors du remplissage d'un disque en dégradé
- et toute la logique algorithmique permettant d'afficher tout ça, notamment en terme de boucles
Mais peut-être n'as-tu pas de NumWorks ?
Et bien ne t'inquiète pas car n'étant pas sectaires et afin que personne ne soit privé, nous nous sommes de notre côté occupés de la compatibilité universelle de Solar, grâce à la bibliothèque polycalc que nous avons créée dans le cadre de notre concours Python de rentrée 2020 et que nous avons fait évoluer ici avec de nouvelles fonctions, notamment pour la détection des touches clavier.
Le chef-d'œuvre de Jil et Emmy est dès maintenant disponible sur TI-Nspire CX II !
Ce fut l'adaptation la plus facile, nous avons juste eu à effectuer les connexions à notre bibliothèque et ça marche tout seul.
Nous avons donc ici dû adapter le fonctionnement ; il faut taper
Ce ne fut pas facile, mais heureusement le code de Jil et Emmy était encore grandement optimisable. Données dupliquées, fonctions de tracé remplacées par les appels natifs lorsque disponibles, variables globales effacées une fois utilisées... Après plusieurs heures de casse-tête eurêka ça marche !
Nous faisons d'ailleurs profiter rétroactivement de nos adaptations précédentes de ce code optimisé.
Le chef-d'œuvre de Jil et Emmy est dès maintenant disponible sur TI-Nspire CX II !
Ce fut l'adaptation la plus facile, nous avons juste eu à effectuer les connexions à notre bibliothèque et ça marche tout seul.
La compatibilité Casio Graph 90+E / fx-CG50 fut plus compliquée. Le gros défaut à ce jour de leur solution Python est qu'elle ne fournit pas de fonction pour tester les appuis de touches clavier. La seule touche que l'on peut détecter c'est la touche
AC/ON, en interceptant et détournant l'exception d'interruption qu'elle génère.
Nous avons donc ici dû adapter le fonctionnement ; il faut taper
AC/ONpour passer à la planète ou étoile suivante, et les différentes propriétés défilent automatiquement.
Mais bon, ce n'était rien ça encore... La compatibilité TI-83 Premium CE Edition Python et TI-84 Plus CE-T Python Edition fut hautement plus complexe. L'ennui étant que le script original est conçu pour exploiter une mémoire de tas Python de 32K, et ici nous nous disposons que de 16K...
Ce ne fut pas facile, mais heureusement le code de Jil et Emmy était encore grandement optimisable. Données dupliquées, fonctions de tracé remplacées par les appels natifs lorsque disponibles, variables globales effacées une fois utilisées... Après plusieurs heures de casse-tête eurêka ça marche !
Nous faisons d'ailleurs profiter rétroactivement de nos adaptations précédentes de ce code optimisé.
Et pour les curieux, petite comparaison contextualisée des performances :
- 4s - TI-Nspire CX II : avec un affichage en double buffering et nombre de fonctions de tracé natives
- 12s - NumWorks : pas de double buffering, et les fonctions de tracé natives sont extrêmement réduites, juste de quoi remplir un rectangle ce qui ne nous aide pas ici, les cercles et disques sont donc dessinés dans le code pixel par pixel
- 1min49s - Casio Graph 90+E / fx-CG50 : affichage en double buffering, mais pas de fonctions de tracé natives en dehors de l'allumage de pixels isolés
- 2min36s - TI-83 Premium CE Edition Python / TI-84 Plus CE-T Python Edition : pas de double buffering, riche bibliothèque de fonctions de tracé natives, mais la communication à chaque appel de fonction graphique entre le coprocesseur Python Atmel et le processeur principal historique eZ80 s'occupant de l'écran fait office de goulot d'étranglement
Téléchargements :
- Solar (pour NumWorks - original)
- Solar (pour NumWorks et KhiCAS)
- Solar (pour TI-Nspire CX II)
- Solar (pour TI-Nspire avec Ndless + KhiCAS)
- Solar (pour Casio Graph 90+E / fx-CG50)
- Solar (pour TI-83 Premium CE Edition Python / TI-84 Plus CE-T Python Edition)