π
<-
Chat plein-écran
[^]

Animation cœur Python pour Casio/NumWorks/TI via PPN

Animation cœur Python pour Casio/NumWorks/TI via PPN

Message non lude critor » 15 Juin 2020, 08:25

Chaque constructeur de calculatrices a conçu sa propre bibliothèque Python graphique permettant de contrôler les pixels de l'écran :
  • kandinsky sur NumWorks
  • casioplot sur Casio Graph 90/35+E II
  • ti_graphics sur TI-83 Premium CE Edition Python
  • ti_draw sur TI-Nspire CX II

C'est à dire que quand tu choisis de développer un script Python pour l'une de ces bibliothèques, il sera alors incompatible avec tous les autres modèles. :'(
A moins de t'embêter à publier une édition différente de ton script pour chaque modèle existant ou à venir...

Mais il existe toutefois une solution que nous t'avons concoctée, PPN, pour PolyPyNet (abrégé du français PolyPythonnettes), une bibliothèque pour les unifier toutes ! :D

Non non, il ne s'agit absolument pas d'une bibliothèque graphique supplémentaire à apprendre, c'est justement ce que nous souhaitions éviter. :p

C'est en fait une bibliothèque de compatibilité. C'est ultra simple à utiliser pour toi, que tu sois utilisateur ou développeur :
  • Utilisateur, il te suffit de charger les fichiers de PPN sur ta calculatrice et c'est tout, plus besoin de t'en occuper. :bj:
  • Développeur, tu as juste à remplacer le nom de module graphique constructeur dans tes lignes d'importation par ppn et c'est tout, rien d'autre à changer dans ton script, tu continues à coder avec les fonctions de ta bibliothèque graphique préférée, que ce soit casioplot, kandinsky ou ti_graphics. :bj:

Nous te publions aujourd'hui une nouvelle illustration des capacités de PPN. Voici une animation de battements de cœur codée initialement en Python par Hackcell pour Casio Graph 90+E, et donc exploitant la bibliothèque graphique casioplot.

Codée à l'occasion du concours de démo graphiques en Python par Planète Casio.

12548Et bien il suffit de remplacer comme indiqué la ligne d'importation from casioplot import * par from ppn import *, et ça marche direct sur tous les autres modèles couleur NumWorks, TI-83 Premium CE Edition Python et TI-Nspire Ndless sans avoir à rien toucher d'autre ! :bj:


Certes les définitions d'écran sont différentes et tout ne peut pas être adapté automatiquement. Mais si tu codes pour la bibliothèque PPN tu pourras récupérer automatiquement les dimensions de l'écran de la plateforme exécutant ton script en appelant après importation les variables ppn_w et ppn_h, et en tenir compte.

Mais à ce détail près, c'est quand même impressionnant d'avoir un script aussi conséquent qui tourne sur toutes les machines après s'être seulement donné la peine de changer une simple ligne d'importation ! :bj:



Parlons un petit peu performances. Précisons que les scripts utilisant PPN ne permettent pas de réaliser de classement pertinent. En effet, un même appel graphique n'est en interne pas exécuté de la même façon selon le modèle utilisé :
  • redirection directe vers la fonction graphique constructeur si le script est exécuté sur la plateforme pour laquelle il a été initialement développé, ou si la plateforme d'exécution dispose d'un appel natif équivalent
  • passage à travers une ou plusieurs fonctions de compatibilité dans le cas contraire
C'est-à-dire qu'ici la Casio Graph 90+E est privilégiée.

Mais ce n'est pas une raison pour ne pas te dire ce que ça donne, pour 1 battement de cœur complet :
  1. 1.665s : NumWorks N0110
  2. 2.228s: NumWorks N0110 (firmware tiers Omega)
  3. 2.751s : Graph 90+E
  4. 2.838s : NumWorks N0100 (firmware tiers Omega)
  5. 2.853s : NumWorks N0100
  6. 7.087s : TI-Nspire CX CR4+
  7. 9.142s : TI-Nspire CX CR3-
  8. 19min45.846s : TI-83 Premium CE Edition Python

On retrouve le problème déjà évoqué pour la TI-83 Premium CE Edition Python, à savoir que le Python tourne sur un coprocesseur, et que toute instruction graphique génère un lourd événement de rafraîchissement qui doit transiter par le processeur principal avant d'atteindre le contrôleur écran, ce qui induit une latence très significative à chaque appel graphique. :'(
Comme ici l'animation du cœur travaille avec des boucles de set_pixel, le code équivalent est sans surprise catastrophique sur TI-83 Premium CE Edition Python.

Il faudrait donc réduire significativement le nombre d'appels graphiques, et justement Texas Instruments avait prévu le problème. Contrairement à la concurrence, sa bibliothèque ti_graphics est tout sauf minimaliste. Elle comprend plein de fonctions dédiées permettant de remplacer de coûteuses boucles de setPixel() pour le tracé de certaines primitives et formes géométriques, ne faisant donc transiter à la différence qu'un unique événément de rafraîchissement :
  • lignes
  • lignes brisées
  • polygones avec remplissage optionnel
  • rectangles avec remplissage optionnel
  • arcs de cercles ou cercles avec remplissage optionnel
  • arcs d'ellipses ou ellipses vec remplissage optionnel
  • images
12550En attendant mieux nous avons donc la solution manuelle de sortir pour chaque script graphique Python une version dédiée tout spécialement optimisée pour TI-83 Premium CE Edition Python.

Il suffit de remplacer les boucles de set_pixel() par les appels graphiques correspondants si existants dans ti_graphics.

Nous te l'avons donc fait, avec cette fois-ci un cadre d'affichage correspondant bien à la zone graphique de 320×210 pixels de la TI-83 Premium CE Edition Python.


Et bien la différence est impressionnante, plus que 45.483s pour un battement de cœur, soit une accélération d'un facteur de 54 ! :#tritop#:
  1. 1.665s : NumWorks N0110
  2. 2.228s: NumWorks N0110 (firmware tiers Omega)
  3. 2.751s : Graph 90+E
  4. 2.838s : NumWorks N0100 (firmware tiers Omega)
  5. 2.853s : NumWorks N0100
  6. 7.087s : TI-Nspire CX CR4+
  7. 9.142s : TI-Nspire CX CR3-
  8. 45.483s : TI-83 Premium CE Edition Python (script dédié optimisé à la main)
  9. 41min08.685s : TI-83 Premium CE Edition Python (compatibilité automatique PolyPyNet)
Un effort donc manuel certes, mais un effort qui vaudra largement le coût pour tes futurs scripts graphiques ! ;)

Téléchargements :
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.1%
 
Messages: 41492
Images: 14556
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Animation cœur Python pour Casio/NumWorks/TI via PPN

Message non lude DoOmnimaga » 17 Juin 2020, 01:41

On va vraiment abandonner l'ASM/C/ICE pour le Python? :troll:
Dream of Omnimaga
ImageImageImageImage
Avatar de l’utilisateur
DoOmnimagaPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 7.7%
 
Messages: 682
Images: 25
Inscription: 21 Fév 2012, 12:04
Localisation: Quebec, Canada
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 11eme annee scolaire termine
YouTube: DJOmnimaga
Twitter/X: DJOmnimaga
Facebook: djomnimaga

Re: Animation cœur Python pour Casio/NumWorks/TI via PPN

Message non lude Hamza.S » 17 Juin 2020, 04:36

Il faut demander à ces bureaucrates, qui n'ont rien dans la tête
Image
Avatar de l’utilisateur
Hamza.SAdmin
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Prochain niv.: 28.5%
 
Messages: 4463
Images: 18
Inscription: 07 Nov 2014, 00:43
Genre: Homme
Calculatrice(s):
MyCalcs profile


Retourner vers News Divers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 27 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1001 utilisateurs:
>960 invités
>36 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)