Ricorsione e cerchi – 2

I cerchi successivi si sviluppano verso l’esterno finché il raggio non diventa troppo piccolo

import pygame

TITOLO ="Immagine ricorsiva: cerchi 1"
DIM    =800
raggio =0.2*DIM # Primo raggio
FATTORE=0.5     # Fattore di riduzione
XC     =DIM/2   # Posizione iniziale
YC     =DIM/2
red    =255     # Colore iniziale
green  =255
blue   =127

def cerchio(r,g,b, x,y, ra):
    pygame.draw.circle(screen, (r,g,b), (x,y), ra)
    if(ra > 2):        
        r2 =0.8*r      # più scuro
        g2 =0.8*g
        b2 =0.8*b
        ra2=FATTORE*ra # più piccolo
        
        cerchio(r2,g2,b2, x+ra,y-ra, ra2)

pygame.init()
screen=pygame.display.set_mode((DIM, DIM))
pygame.display.set_caption(TITOLO)

cerchio(red,green,blue, XC,YC, raggio)

pygame.display.flip()
input("Premi INVIO per continuare...")
pygame.quit()

Aggiungi una chiamata ricorsiva con la destinazione Nord-Ovest

...

    cerchio(r2,g2,b2, x+ra,y-ra, ra2)
    cerchio(r2,g2,b2, x-ra,y-ra, ra2)
...

Aggiungi una chiamata ricorsiva con la destinazione Sud-Ovest

...
    cerchio(r2,g2,b2, x+ra,y-ra, ra2)
    cerchio(r2,g2,b2, x-ra,y+ra, ra2)
...

Aggiungi due chiamate ricorsive

...
    cerchio(r2,g2,b2, x+ra,y-ra, ra2)
    cerchio(r2,g2,b2, x-ra,y-ra, ra2)
    cerchio(r2,g2,b2, x+ra,y-ra, ra2)
...

Le 4 chiamate creano uno schema molto originale

...
    cerchio(r2,g2,b2, x-ra,y-ra, ra2)
    cerchio(r2,g2,b2, x+ra,y-ra, ra2)
    cerchio(r2,g2,b2, x-ra,y+ra, ra2)
    cerchio(r2,g2,b2, x+ra,y+ra, ra2)
...

Fai esperimenti cambiando le costanti

DIM    =1000
raggio =0.24*DIM # Primo raggio più grande
FATTORE=0.5      # Fattore di riduzione
XC     =DIM/2    # Posizione iniziale
YC     =DIM/2
red    =255      # Colore iniziale bianco
green  =255      # ...
blue   =255      # ...
fr     =0.9      # Fattori di riduzione diversi per i tre colori primari 
fg     =0.7
fb     =0.8

Lascia un commento