GéoLib, une lib de géométrie pour le Python de la Graph 90+E
Posté le 14/04/2020 13:37
Bonjour à tous !
Suite à la mise à jour de la Graph 90+E, j'ai fait une petite librairie graphique : GeoLib.py. Cette librairie permet de dessiner des cercles, des lignes, des polygones (avec une fonction à optimisée à part pour les rectangles) et des barres de progressions.
Pour tracer un cercle :
circle(x, y, couleur)
Pour tracer une ligne :
line(x1, y1, x2, y2, couleur)
Pour tracer un polygone :
polygon((x1, y1), (x2, y2), (x3, y3), [color = couleur], [fill = "full / opaque / squared"])
Pour tracer une barre de progression :
progress_bar(x, y, longueur, largeur, pourcentage, couleur)
Pour faire un rectangle :
rectangle(x, y, longueur, largueur, [color = couleur], [fill = "full / opaque / squared"])
Quelques précisions :
- couleur est un tuple
(R, G, B)
- fill est le remplissage (pour les polygones et rectangles) :
full remplit la figure avec la couleur entrée.
opaque rend l'intérieur de la figure blanc opaque.
squared quadrille la figure avec la couleur entrée
Si fill est vide, l'intérieur est transparent par défaut.
Télécharger le code !
Citer : Posté le 14/04/2020 14:38 | #
Je n'ai pas le temps de tester dsl mais est ce que c'est plus rapide que le module turtle de CASIO ?
-Planétarium 2
Citer : Posté le 14/04/2020 14:39 | #
Des images ! Des images ! Indispensable !
Citer : Posté le 14/04/2020 14:40 | #
J'ai pas fait de tests comparatifs… donc aucune idée… (et j'ai pas de quoi faire les tests autrement qu'avec une montre… donc ça ne voudra rien dire x) )
Pour les images j'installe le logiciel de casio ^^'
Citer : Posté le 14/04/2020 14:59 | # | Fichier joint
Pour le module de géométrie, j'ai essayé de tout mettre sur une image, mais du coup on ne voit pas forcément très bien…
Citer : Posté le 14/04/2020 15:09 | #
Une barre de chargement ?
-Planétarium 2
Citer : Posté le 14/04/2020 15:12 | #
Oui !
À différent stades :
Exemple d'écran statistique :
Citer : Posté le 14/04/2020 15:14 | # | Fichier joint
Un autre code qui affiche des cercles (à voir c'est hypnotisant xD) :
Citer : Posté le 14/04/2020 15:17 | #
Faut combien de temps pour générer entièrement ce screen ?
Citer : Posté le 14/04/2020 15:22 | #
Pour afficher 250 cercles pleins ça m'a pris environ 2 minutes et 30 secondes mais le blanc a disparu entièrement à partir d'une grosse minute
Et pour remplir l'écran avec une couleur unie ça prend une petite dizaine de seconde (ça reste potable comme temps)…
Citer : Posté le 14/04/2020 16:58 | #
Remplir l'écran ne me prend que 4 secondes. Attention à bien stocker la couleur dans une variable car évaluer un tuple (R,G,B) prend du temps !
Par exemple :
for y in range(216):
for x in range(384):
set_pixel(x,y,blue)
show_screen()
Est bien plus rapide que :
for x in range(384):
set_pixel(x,y,(0,0,255))
show_screen()
Le premier ne prend que 4 secondes mais le second met plus de 2 minutes.
Citer : Posté le 14/04/2020 16:59 | #
Ah ok… Merci !!
Edit :
Rectification, c'est ce que je fais
Citer : Posté le 14/04/2020 18:34 | #
Autre superbe projet tourné vers l'avenir, félicitations !
Citer : Posté le 14/04/2020 19:52 | #
Merci !! Cette lib est assez annexe par rapport à ce qui existe. (je pense aux Lib de Casio)
Par contre on a un super potentiel du côté de Sprito couplé avec RPmaker !
Citer : Posté le 15/04/2020 09:33 | #
Bonjour.
Où dois-je placer Geolib.py ?
Merci d'avance.
Bochu_59
Citer : Posté le 15/04/2020 10:01 | #
Tu peux le mettre où tu veux Aucune dépendance n'est requise. Il faut juste avoir la Graph 90+E avec l'OS version 3.40.
Citer : Posté le 15/04/2020 10:03 | #
Merci beaucoup.
Citer : Posté le 15/04/2020 10:04 | #
Mais de rien !
Citer : Posté le 06/05/2020 00:05 | # | Fichier joint
J'ai un gros bug sur la fonction polygon :
from casioplot import show_screen
polygon((100,100),(150,100),(100,150),(0,0,0),fill="full")
show_screen()
Citer : Posté le 06/05/2020 08:50 | #
Ah… x)
Sur la fonction polygon il faut mettre color = (0,0,0) c'est pas super intuitif, mais ça permet de mettre plein de points…
Du coup ton code serait :
from casioplot import show_screen
polygon((100,100),(150,100),(100,150),color=(0,0,0),fill="full")
show_screen()
Citer : Posté le 06/05/2020 09:11 | #
Du coup j'ai regardé le code, pourquoi t'as pas fait polygon(*args, color=(0,0,0), fill=None) ? x)
Et idem, le remplissage à coup de get_pixel pour la bounding box, c'est foireux
Je te proposerais sûrement une PR ce soir