π
<-
Chat plein-écran
[^]

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

Online

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
  3. 2.751s
    :
    Graph 90+E
  4. 2.838s
    :
    NumWorks N0100
  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
  3. 2.751s
    :
    Graph 90+E
  4. 2.838s
    :
    NumWorks N0100
  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: 12.3%
 
Posts: 36884
Images: 10231
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
GitHub: critor

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

Unread postby DJ Omnimaga » 17 Jun 2020, 01:41

On va vraiment abandonner l'ASM/C/ICE pour le Python? :troll:
User avatar
DJ OmnimagaPremium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.2%
 
Posts: 433
Images: 5
Joined: 21 Feb 2012, 12:04
Location: Quebec, Canada
Gender: Male
Calculator(s):
Class: Diplômé Secondaire (11ème année scolaire terminé)
YouTube: DJOmnimaga
Twitter: DJOmnimaga
Facebook: djomnimaga.music

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: 14.9%
 
Posts: 4149
Images: 18
Joined: 07 Nov 2014, 00:43
Gender: Male
Calculator(s):


Return to News Divers

Who is online

Users browsing this forum: No registered users and 9 guests

-
Search
-
Social
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.2 pour les Nspire CX II
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
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.
543 utilisateurs:
>517 invités
>18 membres
>8 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)