Page 1 of 1

Axes orthonormés?

Unread postPosted: 12 Dec 2023, 12:26
by christian.mercat
Bonjour tout le monde,
Je suis nouveau sur ce forum et sur numworks. J'en suis très content, en particulier parce qu'elle est disponible aux oraux du concours du CAPES, ce qui me parait le plus simple pour écrire du python facilement, et aussi pour mettre à disposition des élèves du code python jouable sans rien installer ni aucune identification, avec l'émulateur. J'aime vraiment aussi pouvoir installer sur ma calculatrice des scripts directement depuis mon téléphone en USB-C au travers de chrome, sans ordinateur, c'est vraiment simple pour distribuer un script dans la classe à tous les heureux possesseurs de la calculatrice.

Mon petit problème actuel: comment forcer les axes à être orthonormés à l'intérieur de python? Je veux dessiner des carrés.
matplotlib.pyplot a la fonction axis('equal') mais qui n'est pas reconnue dans micropython NumWorks.
mon code

Merci, cordialement, Christian Mercat

Re: Axes orthonormés?

Unread postPosted: 12 Dec 2023, 12:52
by critor
Bonjour.

Si axis("equal") n'est pas encore supporté sur NumWorks, je ne connais que l'astuce de tenir compte de la taille de la zone d'affichage graphique offerte aux scripts Python.
Sur NumWorks elle est très exactement de 320×222 pixels.

Voici par exemple une fonction à qui l'on communique les 4 bornes de la fenêtre matplotlib (xmin, xmax, ymin, ymax), et qui tient compte du rapport de la zone graphique pour déterminer l'une de ces bornes en fonction des autres.
Dans mon cas, la borne à déterminer est à passer avec une valeur de None.
Code: Select all
def orthon(xmin, xmax, ymin, ymax):
  L_ECRAN, H_ECRAN = 320, 222
  if xmin is None:
    xmin = xmax - (ymax - ymin) * L_ECRAN / H_ECRAN
  elif xmax is None:
    xmax = (ymax - ymin) * L_ECRAN / H_ECRAN + xmin
  elif ymin is None:
    ymin = ymax - (xmax - xmin) * H_ECRAN / L_ECRAN
  else:
    ymax = (xmax - xmin) * H_ECRAN / L_ECRAN + ymin
  return (xmin, xmax, ymin, ymax)


Exemple d'utilisation :
Code: Select all
from matplotlib.pyplot import *

plot([i for i in range(8)])
axis(orthon(-3,10,-3,None))
show()


Et une capture de ce que ça donne :
Image

Re: Axes orthonormés?

Unread postPosted: 12 Dec 2023, 13:38
by christian.mercat
Merci critor, c'est exactement ce dont j'avais besoin!

Re: Axes orthonormés?

Unread postPosted: 02 Mar 2024, 21:13
by cent20
christian.mercat wrote:Bonjour tout le monde,
Je suis nouveau sur ce forum et sur numworks. J'en suis très content, en particulier parce qu'elle est disponible aux oraux du concours du CAPES, ce qui me parait le plus simple pour écrire du python facilement, et aussi pour mettre à disposition des élèves du code python jouable sans rien installer ni aucune identification, avec l'émulateur. J'aime vraiment aussi pouvoir installer sur ma calculatrice des scripts directement depuis mon téléphone en USB-C au travers de chrome, sans ordinateur, c'est vraiment simple pour distribuer un script dans la classe à tous les heureux possesseurs de la calculatrice.


Je suis ravi de te retrouver ici ! (avant je suivais tes posts sur X, mais la toxicité du réseau fait fuir les meilleurs :? )
Le fonctionnement USB-C vers calculatrice fonctionne si la calculatrice est une N0100, N0110 (Micro USB coté calculatrice) et une N0115 N0120 (USB-C coté calculatrice) ?
Mes tests avaient été concluant sur micro usb, mais j'ai eu pendant 2 ans un iphone, et cela ne fonctionnait pas sur Ios :(

Ceci dit je n'ai pas retesté depuis 2 ans. :)

christian.mercat wrote:Merci critor, c'est exactement ce dont j'avais besoin!


Oui il est fort ce critor, il sait tout sur tout ! Je n'aurais pas proposé une meilleur solution, je n'aurais juste pas mis de maj dans le nom des variables :troll: