Curva di Koch – 4 – x3

Disegna 3 volte l’ennesima variazione della curva di Koch.

Ricorsione da 1 a 5

Scarica le singoli immagini: Koch-4-x3-1Koch-4-x3-2Koch-4-x3-3Koch-4-x3-4Koch-4-x3-5

Ricorsione=6

import turtle # ...
import math   # sqrt()
import time   # sleep()
#------------------------------------------------
def set_all():
    global POSIZIONE, DISTANZA, DISTANZE, RIC_MAX
    
    WIDTH    = 800 # larghezza finestra
    HEIGHT   = 800 # altezza finestra
    RIC_MAX  = 6   # massima ricorsione
 
    POSIZIONE = HEIGHT*0.42            # posizione iniziale
    DISTANZA  = math.sqrt(3)*POSIZIONE # dimensione iniziale della curva
    DISTANZE  = [0]*(RIC_MAX+1)        # dimensioni successive
 
    turtle.setup(width=WIDTH, height=HEIGHT)
    turtle.hideturtle()
    turtle.pencolor("red")
    turtle.fillcolor("red")
    turtle.bgcolor("pink")
    turtle.pensize(1)
    turtle.tracer(0)
#------------------------------------------------
def start_draw(r):
    DISTANZE[r] = DISTANZA
    for i in range(r-1,0,-1):
        DISTANZE[i]=DISTANZE[i+1]/4
    
    turtle.penup()
    turtle.setposition(0, POSIZIONE)
    turtle.setheading(-60)
    turtle.pendown()
    turtle.clear()
    turtle.begin_fill()

def end_draw():
    turtle.end_fill()
    turtle.update()
    time.sleep(2)
#------------------------------------------------
def koch(n):
    if(n == 1):
        turtle.forward(DISTANZE[n])
    else:
        koch(n-1); turtle.left(90)
        koch(n-1); turtle.right(90)
        koch(n-1); turtle.right(90)
        koch(n-1);
        koch(n-1); turtle.left(90)
        koch(n-1); turtle.left(90)
        koch(n-1); turtle.right(90)
        koch(n-1)
#------------------------------------------------ MAIN
set_all()
for r in range(1,RIC_MAX+1):
    start_draw(r)
    
    koch(r); turtle.right(120)
    koch(r); turtle.right(120)
    koch(r)
    
    end_draw()

turtle.done()

Lascia un commento