Salto a due terzi

Chaos Game

  1. posiziona 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

Quattro punti

import random # randint()
import pygame

WIDTH =800  # Larghezza
HEIGHT=800  # Altezza
SPAZIO=50   # Cornice vuota
RAGGIO=1    # Punto colorato
FRAME1=2    # Numero frame al secondo
FRAME2=500  # Numero punti per ogni frame

PUNTI=[]
PUNTI.append((      SPAZIO,        SPAZIO))
PUNTI.append((WIDTH-SPAZIO,        SPAZIO))
PUNTI.append((      SPAZIO, HEIGHT-SPAZIO))
PUNTI.append((WIDTH-SPAZIO, HEIGHT-SPAZIO))

NUM=len(PUNTI)

pygame.init()
screen=pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Chaos Game: frattale di Vicsek (4)")
clock=pygame.time.Clock()

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

xx,yy = PUNTI[0]
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, NUM-1)
        x, y=PUNTI[indice]

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

pygame.quit()

Cinque punti

Aggiungi un altro punto… ottieni il frattale di Vicsek!

PUNTI.append((WIDTH/2, HEIGHT/2))

Otto punti

Con 8 punti intorno a un quadrato si ottiene il tappeto di Sierpinski!

PUNTI.append((      SPAZIO,        SPAZIO))
PUNTI.append((WIDTH/2     ,        SPAZIO))
PUNTI.append((WIDTH-SPAZIO,        SPAZIO))
PUNTI.append((      SPAZIO, HEIGHT/2     ))
PUNTI.append((WIDTH-SPAZIO, HEIGHT/2     ))
PUNTI.append((      SPAZIO, HEIGHT-SPAZIO))
PUNTI.append((WIDTH/2     , HEIGHT-SPAZIO))
PUNTI.append((WIDTH-SPAZIO, HEIGHT-SPAZIO))

Continua…

  • Cambia la posizione di un punto
  • Elimina uno dei punti

Lascia un commento