Comme suggerer dans les commentaires, j'ai rajouté les lignes avec un antialiasing basé sur l'agorithme de Xiaolin Wu
Pour le dessin tous est dans le fichier AntiAlias.py (la fonction point dessine le pixel)
j'utilise Python 3.3 avec PIL et matplotlib
PIL me sert pour l'afficher dans n'importe quel canvas dont celui de tkinter
matplotlib me sert juste de comparatif puisque cet librairy possede aussi un antialiasing
De plus on peut dessiner des cercles, des ellipses sans le "crénelage"
mail:ludwig.cron@gmail.com
Source / Exemple :
http://fr.wikipedia.org/wiki/Algorithme_de_De_Casteljau
http://freespace.virgin.net/hugo.elias/graphics/x_wuline.htm
Conclusion :
Version amélioré, POO, Antiliasing, Ellipse dans Tkinter
Modifié par cs_mecrosoft le 13/08/2013 à 15:44
13 août 2013 à 12:20
Pour PIL sur python 3.3 (Windows) ce qui est mon cas http://www.lfd.uci.edu/~gohlke/pythonlibs/
ou directement le github
https://github.com/python-imaging/Pillow
sinon directement modifier la fonction point du fichier AntiAlias.py qui dessine le pixel
Merci de ta suggestion
29 sept. 2011 à 22:30
je te remercie d'y avoir penser! cela permettrai de créer des fonctions de dessin sur tkinter avec antialising et donc l'utiliser. Mais l'algorithme de michener est une "base" pour le dessin, comme ici ou j'utilise l'algorithme de tkinter pour dessiner des lignes.
la fonction create_arc je l'ai utilisé seulement dans la fonction drawControl() pour afficher les points eponymes. si tu veut tu peut ne pas les afficher et modifier ta copie du code a ta guise.
j’espère avoir répondu a tes questions.
Cela fait plaisir de pouvoir partager ses connaissances et de se remettre en questions. (défi intellectuel du soir!)
29 sept. 2011 à 20:25
je l'ai essayer , et une chose mais rester perplexe , la courbe n'est pas ouverte , est il possible d'ajuster un courbe créer par une algorithmes et de la placer , sans le create-arc
j'ai consulter un site
foad.refer.org/IMG/pdf/D226_Chapitre-2.pdf
il desiganit l'algorithme de Michener pour l'octant 1 et
pour un cercle de centre (0,0) et de rayon R
début
// Initialisation
x R ; y 0 ;
TantQue x>= y faire
Dessiner(x,y)
y = y + 1 ;
d1 = |R*R-(x*x+y*y)| ;
d2 = |R*R-((x-1)*(x-1)+y*y)| ;
Si d1 > d2 alors
x = x - 1 ;
FinSi
pense tu qu'il possible de l'accoler à ton code ?
25 août 2011 à 14:49
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.