Salto a metà, scelta guidata, punti in cerchio

Chaos Game

  1. posiziona i punti in senso orario intorno a un cerchio
  2. il prossimo punto colorato è a metà tra quello attuale e uno scelto a caso
  3. la scelta è guidata in un certo sottoinsieme dei punti
import math
import random # randint()
import pygame

SCELTA=(+0,+1,+3)
NUMERO=4
DIM   =800
RAGGIO=0.45*DIM
raggio=1    # Punto colorato
FRAME1=2    # Numero frame al secondo
FRAME2=500  # Numero punti per ogni frame

PUNTI=[]
angolo=math.pi/2
dAngolo=2*math.pi/NUMERO
XC=DIM/2
YC=DIM/2
for i in range(NUMERO):
    x=XC+RAGGIO*math.cos(angolo)
    y=YC-RAGGIO*math.sin(angolo)
    PUNTI.append((x,y))
    angolo +=dAngolo


pygame.init()
screen=pygame.display.set_mode((DIM, DIM))
pygame.display.set_caption("Chaos Game: tappeto rotondo 1/2 " + str(SCELTA))
clock=pygame.time.Clock()

# Disegna i punti di base
for x,y in PUNTI:
    pygame.draw.circle(screen, (0,0,128), (x,y), 20)

indice=0
xx,yy = PUNTI[indice]
ANCORA=True
while ANCORA:
    # Gestione degli eventi
    for ev in pygame.event.get():
        if(ev.type == pygame.QUIT):
            ANCORA=False

    # Tono di verde
    PENNA=(0, random.randint(128,255), 0)

    # Un certo numero di punti
    for i in range(FRAME2):    
        ii=random.choice(SCELTA)
        indice=(indice+ii)%NUMERO

        x, y=PUNTI[indice]

        xx=(xx+x)/2
        yy=(yy+y)/2
        
        pygame.draw.circle(screen, PENNA, (xx,yy), raggio)
    
    pygame.display.flip()
    clock.tick(FRAME1)

pygame.quit()

Lascia un commento