π
<-

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

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

Unread postby critor » 15 Jun 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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

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

Unread postby DoOmnimaga » 17 Jun 2020, 01:41

On va vraiment abandonner l'ASM/C/ICE pour le Python? :troll:
ImageImageImageImage
User avatar
DoOmnimagaPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 20.9%
 
Posts: 696
Images: 51
Joined: 21 Feb 2012, 12:04
Location: Quebec, Canada
Gender: Male
Calculator(s):
MyCalcs profile
Class: 11eme annee scolaire termine
YouTube: DJOmnimaga
Twitter: DJOmnimaga
Facebook: dreamofomnimaga.page

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

Unread postby Hamza.S » 17 Jun 2020, 04:36

Il faut demander à ces bureaucrates, qui n'ont rien dans la tête
Image
User avatar
Hamza.SAdmin
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 29%
 
Posts: 4501
Images: 18
Joined: 07 Nov 2014, 00:43
Gender: Male
Calculator(s):
MyCalcs profile


Return to News Divers

Who is online

Users browsing this forum: ClaudeBot [spider] and 16 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
800 utilisateurs:
>734 invités
>57 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)