« Programmation objet et géométrie/Objets en Python sous Gimp/Tracé de polygones en Python sous Gimp » : différence entre les versions
Contenu supprimé Contenu ajouté
m →Représentation paramétrique : typog |
m <source> -> <syntaxhighlight> (phab:T237267) |
||
Ligne 24 :
Comme d'habitude, on importe les fonctions utiles pour que le script fonctionne (ici on a besoin des fonctions trigonométriques):
<
#!/usr/bin/env python
Ligne 31 :
from math import *
from gimpfu import *
</syntaxhighlight>
==Script==
Ligne 43 :
#son premier calque:
<
def python_lemniscate(img) :
largeur=img.width
hauteur=img.height
calque=img.layers[0]
</syntaxhighlight>
===Les sommets===
Ligne 58 :
En phase de test, il est plus prudent de choisir une valeur faible pour ''ns'': Ici on prend 6 sommets, ce qui aura pour effet de faire ressembler la lemniscate à une figure composée de deux carrés ayant un sommet commun. Donc ''ns'' est initialisé à 6. Et le tableau ''sommets'' est initialement vide:
<
ns=6
sommets=[]
</syntaxhighlight>
====Boucle====
Ligne 75 :
C'est presque plus court à écrire en Python qu'à décrire:
<
for i in range(ns):
t=2*pi/ns*i
Ligne 82 :
P=(x,y)
sommets.extend(P)
</syntaxhighlight>
====Fin====
Ligne 88 :
Pour refermer le polygone, on remet ça une dernière fois: On crée le point initial à nouveau, et on le rajoute dans le tableau. Ainsi le tableau contiendra ''ns+1'' points, donc ''2ns+2'' nombres entiers:
<
x=int(largeur/2+largeur/4)
y=int(hauteur/2)
P=(x,y)
sommets.extend(P)
</syntaxhighlight>
===Tracé au pinceau===
Ligne 105 :
Le pinceau est appelé dans la base de donnée des procédures (''pdb'') de Gimp:
<
pdb.gimp_paintbrush_default(calque,2*ns+2,sommets)
</syntaxhighlight>
===Récapitulatif===
Ligne 113 :
L'objet ''lemniscate'' est donc celui-ci:
<
def python_lemniscate(img) :
largeur=img.width
Ligne 131 :
sommets.extend(P)
pdb.gimp_paintbrush_default(calque,2*ns+2,sommets)
</syntaxhighlight>
==Enregistrement du filtre==
Ligne 137 :
Pour que le filtre soit accessible depuis le Gimp, on doit ajouter quelque chose comme ceci en bas du script:
<
register(
"lemniscate",
Ligne 155 :
main()
</syntaxhighlight>
Après ça il suffit d'enregistrer le fichier texte dans le dossier des scripts de Gimp, et de le rendre exécutable, pour avoir le script dans le Gimp, sous la forme d'un filtre de rendu.
|