Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » GéoLib, une lib de géométrie pour le Python de la Graph 90+E
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

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 !


1, 2 Suivante
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

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 ?
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 14/04/2020 14:39 | #


Des images ! Des images ! Indispensable !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

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 ^^'
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

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…


"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 14/04/2020 15:09 | #


Une barre de chargement ?
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 14/04/2020 15:12 | #


Oui !

À différent stades :





Exemple d'écran statistique :


"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 14/04/2020 15:14 | # | Fichier joint


Un autre code qui affiche des cercles (à voir c'est hypnotisant xD) :


"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 14/04/2020 15:17 | #


Faut combien de temps pour générer entièrement ce screen ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

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)…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

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 :

blue = (0,0,255)

for y in range(216):
  for x in range(384):
    set_pixel(x,y,blue)
show_screen()

Est bien plus rapide que :

for y in range(216):
  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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 14/04/2020 16:59 | #


Ah ok… Merci !!

Edit :

Rectification, c'est ce que je fais
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 14/04/2020 18:34 | #


Autre superbe projet tourné vers l'avenir, félicitations !
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

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 !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Bochu_59 Hors ligne Membre Points: 241 Défis: 5 Message

Citer : Posté le 15/04/2020 09:33 | #


Bonjour.
Où dois-je placer Geolib.py ?
Merci d'avance.
Bochu_59
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

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.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Bochu_59 Hors ligne Membre Points: 241 Défis: 5 Message

Citer : Posté le 15/04/2020 10:03 | #


Merci beaucoup.

Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 15/04/2020 10:04 | #


Mais de rien !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 06/05/2020 00:05 | # | Fichier joint


J'ai un gros bug sur la fonction polygon :
from Geolib import polygon
from casioplot import show_screen

polygon((100,100),(150,100),(100,150),(0,0,0),fill="full")
show_screen()



Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

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 Geolib import polygon
from casioplot import show_screen

polygon((100,100),(150,100),(100,150),color=(0,0,0),fill="full")
show_screen()

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 217 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd