Salto a due terzi, punti in cerchio

Chaos Game

  1. posiziona in cerchio un certo numero di punti di base
  2. il prossimo punto colorato รจ a due terzi tra quello attuale e un altro scelto a caso tra quelli di base
import math   # cos(), sin()
import random # randint()
import pygame

NUMERO=3
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 2/3: " + str(NUMERO))
clock=pygame.time.Clock()

# Disegna i punti di base
for punto in PUNTI:
    pygame.draw.circle(screen, (0,0,128), punto, 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):            
        indice=random.randint(0, NUMERO-1)
        x, y=PUNTI[indice]

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

pygame.quit()

Con punto centrale

import math   # cos(), sin()
import random # randint()
import pygame

NUMERO=3
DIM   =800
RAGGIO=0.4*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
PUNTI.append((XC,YC))            # Punto centrale
for i in range(NUMERO):          # NUMERO punti in cerchio
    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 2/3: " + str(NUMERO)+"+c")
clock=pygame.time.Clock()

# Disegna i punti di base
for punto in PUNTI:
    pygame.draw.circle(screen, (0,0,128), punto, 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):            
        indice=random.randint(0, NUMERO)
        x, y=PUNTI[indice]

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

pygame.quit()

Lascia un commento