Corrette violazioni PEP 8
*Corretti nomi delle classi *Corretta lunghezza delle linee *Corretti spazi bianchi *Corretti imports *Aggiunte docstrings
This commit is contained in:
parent
0357e4848f
commit
78d7f76312
@ -1,11 +1,12 @@
|
|||||||
import turtle, frattali
|
import turtle
|
||||||
|
import frattali
|
||||||
|
|
||||||
frattali.impostazioni()
|
frattali.impostazioni()
|
||||||
|
|
||||||
fiocco = frattali.koch()
|
fiocco = frattali.Koch()
|
||||||
fiocco.disegna(n=3,l=6,p=1)
|
fiocco.disegna(n=3,l=6,p=1)
|
||||||
|
|
||||||
controfiocco = frattali.koch("#000")
|
controfiocco = frattali.Koch("#000")
|
||||||
controfiocco.disegna(n=3,l=4,p=-1)
|
controfiocco.disegna(n=3, l=4, p=-1)
|
||||||
|
|
||||||
turtle.mainloop()
|
turtle.mainloop()
|
||||||
|
96
Frattali.py
96
Frattali.py
@ -1,14 +1,15 @@
|
|||||||
import turtle,math
|
import math
|
||||||
|
import turtle
|
||||||
|
|
||||||
def impostazioni():
|
def impostazioni():
|
||||||
turtle.title("Frattali")
|
turtle.title("Frattali")
|
||||||
turtle.bgcolor("#000")
|
turtle.bgcolor("#000")
|
||||||
turtle.hideturtle()
|
turtle.hideturtle()
|
||||||
|
|
||||||
class frattale(turtle.Pen):
|
class Frattale(turtle.Pen):
|
||||||
|
|
||||||
def __init__(self, colore = "yellow", velocità=0, riempi=True):
|
def __init__(self, colore = "yellow", velocità=0, riempi=True):
|
||||||
super(frattale,self).__init__()
|
super(Frattale, self).__init__()
|
||||||
self.colore = colore
|
self.colore = colore
|
||||||
self.riempi = riempi
|
self.riempi = riempi
|
||||||
self.velocità = velocità
|
self.velocità = velocità
|
||||||
@ -21,62 +22,93 @@ class frattale(turtle.Pen):
|
|||||||
self.setpos(x, y)
|
self.setpos(x, y)
|
||||||
self.pd()
|
self.pd()
|
||||||
|
|
||||||
class koch(frattale):
|
class Koch(Frattale):
|
||||||
|
"""
|
||||||
|
Curva di Koch
|
||||||
|
"""
|
||||||
def disegna(self, l=3, s=250, n=4, p=1):
|
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)
|
spigolo = 2 * s * math.sin(math.pi/l)
|
||||||
self.posizione(s,0)
|
self.posizione(s, 0)
|
||||||
if self.riempi == True:
|
if self.riempi == True:
|
||||||
self.begin_fill()
|
self.begin_fill()
|
||||||
self.rt(180 - (90 * (l-2) / l))
|
self.rt(180 - (90 * (l-2) / l))
|
||||||
for i in range(l):
|
for i in range(l):
|
||||||
self.curva(spigolo, n, p)
|
self.__curva(spigolo, n, p)
|
||||||
self.rt(360 / l)
|
self.rt(360 / l)
|
||||||
self.lt(180 - (90 * (l-2) / l))
|
self.lt(180 - (90 * (l-2) / l))
|
||||||
if self.riempi == True: self.end_fill()
|
if self.riempi == True: self.end_fill()
|
||||||
self.posizione(0,0)
|
self.posizione(0,0)
|
||||||
|
|
||||||
def curva(self, s, n, p):
|
def __curva(self, s, n, p):
|
||||||
if n < 1:
|
if n < 1:
|
||||||
self.fd(s)
|
self.fd(s)
|
||||||
return
|
return
|
||||||
self.curva(s/3, n-1, p)
|
self.__curva(s/3, n-1, p)
|
||||||
self.lt(60*p)
|
self.lt(60*p)
|
||||||
self.curva(s/3, n-1, p)
|
self.__curva(s/3, n-1, p)
|
||||||
self.rt(120*p)
|
self.rt(120*p)
|
||||||
self.curva(s/3, n-1, p)
|
self.__curva(s/3, n-1, p)
|
||||||
self.lt(60 * 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):
|
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:
|
if self.riempi == True:
|
||||||
self.begin_fill()
|
self.begin_fill()
|
||||||
self.curva(s, n, p)
|
self.__curva(s, n, p)
|
||||||
if self.riempi == True:
|
if self.riempi == True:
|
||||||
self.end_fill()
|
self.end_fill()
|
||||||
self.posizione(0,0)
|
self.posizione(0,0)
|
||||||
|
|
||||||
def curva(self, s, n, p):
|
def __curva(self, s, n, p):
|
||||||
if n == 0:
|
if n == 0:
|
||||||
return
|
return
|
||||||
self.lt(p*90)
|
self.lt(p*90)
|
||||||
self.curva(s, n-1, -p)
|
self.__curva(s, n-1, -p)
|
||||||
self.fd(s)
|
self.fd(s)
|
||||||
self.rt(p*90)
|
self.rt(p*90)
|
||||||
self.curva(s, n-1, p)
|
self.__curva(s, n-1, p)
|
||||||
self.fd(s)
|
self.fd(s)
|
||||||
self.curva(s, n-1, p)
|
self.__curva(s, n-1, p)
|
||||||
self.rt(p*90)
|
self.rt(p*90)
|
||||||
self.fd(s)
|
self.fd(s)
|
||||||
self.curva(s, n-1, -p)
|
self.__curva(s, n-1, -p)
|
||||||
self.lt(p*90)
|
self.lt(p*90)
|
||||||
|
|
||||||
class sierpinski(frattale):
|
class Sierpinski(Frattale):
|
||||||
|
"""
|
||||||
|
Triangolo di sierpinski
|
||||||
|
"""
|
||||||
def disegna(self, n, s=400, x=-200, y=-150):
|
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)
|
self.posizione(x, y)
|
||||||
if n==1:
|
if n==1:
|
||||||
if self.riempi == True:
|
if self.riempi == True:
|
||||||
|
11
README.md
11
README.md
@ -12,21 +12,22 @@ I tipi di frattali sono organizzati in classi. Per disegnarne uno istanziare un
|
|||||||
|
|
||||||
figura = tipo(colore,velocità,riempi)
|
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;
|
*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;
|
*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;
|
*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()":
|
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;
|
*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;
|
*p: parità della curva, 1 o -1;
|
||||||
|
*x, y: posizione del punto iniziale (solo in Sierpinski);
|
||||||
|
|
||||||
Es. figura.disegna(3,250,4,1)
|
Es. figura.disegna(3,250,4,1)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user