Curva a C – 2

La curva a C con angoli di 60° e due punte.

Ricorsione da 1 a 6

Ricorsione=7

Codice

import time   # sleep()
import turtle
#------------------------------------------------
def set_all():
    global POSIZIONE, DISTANZA, DISTANZE, \
           RIC_MAX, POS_X, POS_Y
    
    WIDTH    = 800 # larghezza finestra
    HEIGHT   = 400 # altezza finestra
    RIC_MAX  = 7   # massima ricorsione
 
    POS_X    = -WIDTH*0.3        # posizione iniziale
    POS_Y    = -HEIGHT*0.3       # posizione iniziale
    DISTANZA =  WIDTH*0.6        # dimensione iniziale della curva
    DISTANZE = [0]*(RIC_MAX+1)   # dimensioni successive
 
    turtle.setup(width=WIDTH, height=HEIGHT)
    turtle.hideturtle()
    turtle.pensize(2)
    turtle.pencolor("red")
    turtle.pensize(2)
    turtle.bgcolor("pink")
    turtle.tracer(0)
#------------------------------------------------
def start_draw(r):
    DISTANZE[r] = DISTANZA
    for i in range(r-1,0,-1):
        DISTANZE[i]=DISTANZE[i+1]/2
    
    turtle.penup()
    turtle.setposition(POS_X, POS_Y)
    turtle.setheading(0)
    turtle.pendown()    
    turtle.clear()
    turtle.title("Livello="+str(r))
    
def end_draw():
    turtle.update()
    time.sleep(2)
#------------------------------------------------
def c(n):
    if(n == 1):
        turtle.forward(DISTANZE[n])
    else:
        turtle.left(60)  ; c(n-1); 
        turtle.right(120); c(n-1);
        turtle.left(120) ; c(n-1);
        turtle.right(120); c(n-1);
        turtle.left(60)  ;
#------------------------------------------------ MAIN
set_all()
for r in range(1,RIC_MAX+1):
    start_draw(r)
    c(r)
    end_draw()
turtle.done()

Osserva

  • il risultato si infittisce più velocemente della curva di Lévy perché ci sono 2 punte invece di una…
  • disegna le figure successive con pause di 2 secondi
  • le distanze da percorrere sono calcolate in anticipo

Lascia un commento