From 78d7f76312e4f2184e92db12621628199a359a57 Mon Sep 17 00:00:00 2001 From: Rnhmjoj Date: Sun, 4 Aug 2013 22:58:13 +0200 Subject: [PATCH] Corrette violazioni PEP 8 *Corretti nomi delle classi *Corretta lunghezza delle linee *Corretti spazi bianchi *Corretti imports *Aggiunte docstrings --- Esempio.py | 9 ++--- Frattali.py | 96 +++++++++++++++++++++++++++++++++++------------------ README.md | 11 +++--- 3 files changed, 75 insertions(+), 41 deletions(-) diff --git a/Esempio.py b/Esempio.py index 0c43513..1d2ec1a 100644 --- a/Esempio.py +++ b/Esempio.py @@ -1,11 +1,12 @@ -import turtle, frattali +import turtle +import frattali frattali.impostazioni() -fiocco = frattali.koch() +fiocco = frattali.Koch() fiocco.disegna(n=3,l=6,p=1) -controfiocco = frattali.koch("#000") -controfiocco.disegna(n=3,l=4,p=-1) +controfiocco = frattali.Koch("#000") +controfiocco.disegna(n=3, l=4, p=-1) turtle.mainloop() diff --git a/Frattali.py b/Frattali.py index 5cf2279..ddc6457 100644 --- a/Frattali.py +++ b/Frattali.py @@ -1,14 +1,15 @@ -import turtle,math +import math +import turtle def impostazioni(): turtle.title("Frattali") turtle.bgcolor("#000") turtle.hideturtle() -class frattale(turtle.Pen): +class Frattale(turtle.Pen): def __init__(self, colore = "yellow", velocità=0, riempi=True): - super(frattale,self).__init__() + super(Frattale, self).__init__() self.colore = colore self.riempi = riempi self.velocità = velocità @@ -21,62 +22,93 @@ class frattale(turtle.Pen): self.setpos(x, y) self.pd() -class koch(frattale): - +class Koch(Frattale): + """ + Curva di Koch + """ def disegna(self, l=3, s=250, n=4, p=1): + """ + Disegna la curva nel canvas. + *l: numero di lati; + *s: misura del lato in pixel; + *n: numero di ricorsioni; + *p: parità della curva, 1 o -1; + + Es. Koch.disegna(3, 250, 4, 1) + """ spigolo = 2 * s * math.sin(math.pi/l) - self.posizione(s,0) + self.posizione(s, 0) if self.riempi == True: self.begin_fill() self.rt(180 - (90 * (l-2) / l)) for i in range(l): - self.curva(spigolo, n, p) + self.__curva(spigolo, n, p) self.rt(360 / l) self.lt(180 - (90 * (l-2) / l)) if self.riempi == True: self.end_fill() self.posizione(0,0) - def curva(self, s, n, p): + def __curva(self, s, n, p): if n < 1: self.fd(s) return - self.curva(s/3, n-1, p) + self.__curva(s/3, n-1, p) self.lt(60*p) - self.curva(s/3, n-1, p) + self.__curva(s/3, n-1, p) self.rt(120*p) - self.curva(s/3, n-1, p) + self.__curva(s/3, n-1, p) self.lt(60 * p) - self.curva(s/3, n-1, p) + self.__curva(s/3, n-1, p) -class hilbert(frattale): - +class Hilbert(Frattale): + """ + Curva di Hilbert (curva di Peano) + """ def disegna(self, s=4, n=6, p=1): - self.posizione(-33*s*p,-33*s*p) + """ + Disegna la curva nel canvas. + *s: misura del lato in pixel; + *n: numero di ricorsioni; + *p: parità della curva, 1 o -1; + + Es. Hilbert.disegna(4, 6, 1) + """ + self.posizione(-33*s*p, -33*s*p) if self.riempi == True: self.begin_fill() - self.curva(s, n, p) + self.__curva(s, n, p) if self.riempi == True: self.end_fill() self.posizione(0,0) - def curva(self, s, n, p): - if n == 0: - return - self.lt(p*90) - self.curva(s, n-1, -p) - self.fd(s) - self.rt(p*90) - self.curva(s, n-1, p) - self.fd(s) - self.curva(s, n-1, p) - self.rt(p*90) - self.fd(s) - self.curva(s, n-1, -p) - self.lt(p*90) + def __curva(self, s, n, p): + if n == 0: + return + self.lt(p*90) + self.__curva(s, n-1, -p) + self.fd(s) + self.rt(p*90) + self.__curva(s, n-1, p) + self.fd(s) + self.__curva(s, n-1, p) + self.rt(p*90) + self.fd(s) + self.__curva(s, n-1, -p) + self.lt(p*90) -class sierpinski(frattale): - +class Sierpinski(Frattale): + """ + Triangolo di sierpinski + """ def disegna(self, n, s=400, x=-200, y=-150): + """ + Disegna la curva nel canvas. + *n: numero di ricorsioni; + *s: misura del lato in pixel; + *x,y: coordinate del punto iniziale; + + Es. Sierpinski.disegna(3, 400, -200, -150) + """ self.posizione(x, y) if n==1: if self.riempi == True: diff --git a/README.md b/README.md index 2e0e682..2898e8d 100644 --- a/README.md +++ b/README.md @@ -12,21 +12,22 @@ I tipi di frattali sono organizzati in classi. Per disegnarne uno istanziare un figura = tipo(colore,velocità,riempi) - *tipo: koch,sierpinski,hilbert; + *tipo: Koch, Sierpinski, Hilbert; *Colore: stringa con il nome del colore, tupla che contiene i numeri RGB del colore o #colore in RGB esadecimale; *Velocità: un intero tra 0 e 10 o una stringa "fastest" = 0, "fast" = 10, "normal" = 6, "slow" = 3, "slowest" = 1; *Riempi: True o False per riempire il frattale dopo averlo disegnato; - Es. figura = koch("#92182b",0,True) + Es. figura = Koch("#92182b",0,True) Dopo aver creato l'oggetto per disegnare usare il metodo ".disegna()": - figura.disegna(l,s,n,p) + figura.disegna(l, s, n, p, x, y) - *l: numero di lati; + *l: numero di lati (solo in Koch); *s: misura del lato in pixel; - *n: numero di ricorsioni; + *n: numero di ricorsioni (solo in Koch e Hilbert); *p: parità della curva, 1 o -1; + *x, y: posizione del punto iniziale (solo in Sierpinski); Es. figura.disegna(3,250,4,1)