Animation Radar Python avec adaptation écran automatique
Posted: 31 May 2020, 20:31
Dans deux articles précédents, nous abordions le sujet d'une animation de radar initialement codée en Python pour Casio Graph 90+E, et de sa compatibilité avec l'ensemble des pythonnettes à l'aide de notre bibliothèque de compatibilité automatique PolyPyNet.
Juste à changer 1 ligne d'importation, et le script se mettait alors à marcher tout seul sur tous les modèles !
Juste à changer 1 ligne d'importation, et le script se mettait alors à marcher tout seul sur tous les modèles !
Toutefois, les différents modèles ont des définitions d'écran différentes, et là pas de magie :
Effectivement, le script initial utilisait en dur les dimensions de la zone graphique Casio Graph 90+E, à savoir 384×192 pixels.
Effectivement, le script initial utilisait en dur les dimensions de la zone graphique Casio Graph 90+E, à savoir 384×192 pixels.
Une solution existe dans PolyPyNet, encore faut-il que l'auteur du script pense à l'utiliser dès le départ. A savoir les variables globales ppn_w et ppn_h qui indiquent les dimensions de la zone graphique.
Nous avons donc remplacé les différentes valeurs en dur par des appels à ces variables, et maintenant le même script tourne sur les différents modèles en s'adaptant automatiquement aux dimensions de l'écran !
Nous avons même pu gérer au passage un affichage monochrome sur Casio Graph 35+E, en testant la variable globale ppn_has_color !
Nous avons donc remplacé les différentes valeurs en dur par des appels à ces variables, et maintenant le même script tourne sur les différents modèles en s'adaptant automatiquement aux dimensions de l'écran !
Nous avons même pu gérer au passage un affichage monochrome sur Casio Graph 35+E, en testant la variable globale ppn_has_color !
Pour TI-83 Premium CE Edition Python, nous te conseillons toutefois de continuer à télécharger la version dédiée ci-après.
En effet d'une part le tas / heap Python extrêmement limité (à peine plus de 17K avant importation du module graphique) suffit à peine pour ce script, et donc autant s'affranchir de la taille mémoire occupée par la couche de compatibilité.
D'autre part, l'architecture particulière coprocesseur Python ↔ processeur eZ80 ↔ contrôleur écran est un autre facteur très limitant, avec au mieux dans les 49 événements écran par seconde.
Les boucles d'appel de setPixel() déclenchant autant d'événements de rafraîchissement que d'itérations, y sont remplacées à chaque fois que possible par les fonctions de tracé de primitives offertes à cette fin par le module ti_graphics, permettant le même rendu mais avec un seul événement matériel.
En effet d'une part le tas / heap Python extrêmement limité (à peine plus de 17K avant importation du module graphique) suffit à peine pour ce script, et donc autant s'affranchir de la taille mémoire occupée par la couche de compatibilité.
D'autre part, l'architecture particulière coprocesseur Python ↔ processeur eZ80 ↔ contrôleur écran est un autre facteur très limitant, avec au mieux dans les 49 événements écran par seconde.
Les boucles d'appel de setPixel() déclenchant autant d'événements de rafraîchissement que d'itérations, y sont remplacées à chaque fois que possible par les fonctions de tracé de primitives offertes à cette fin par le module ti_graphics, permettant le même rendu mais avec un seul événement matériel.
Téléchargements :