small-projects/algorithm-visualisations/Sierpinski.py
OusmBlueNinja 483643a4c0 algorithms
2025-04-07 11:53:24 -05:00

52 lines
1.4 KiB
Python

import pygame
import random
# Initialize pygame
pygame.init()
# Screen dimensions
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Chaos Game - Sierpinski Triangle")
# Define the triangle vertices
vertex1 = (WIDTH // 2, 50)
vertex2 = (50, HEIGHT - 50)
vertex3 = (WIDTH - 50, HEIGHT - 50)
vertices = [vertex1, vertex2, vertex3]
# Start with a random point
current_point = (random.randint(0, WIDTH), random.randint(0, HEIGHT))
# Set up the clock for controlling frame rate
clock = pygame.time.Clock()
# Fill background color (black)
screen.fill((0, 0, 0))
# Main loop
running = True
while running:
# Handle events (close window)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Plot several points per frame for a faster build-up
for _ in range(1):
# Choose a random vertex
chosen_vertex = random.choice(vertices)
# Compute the midpoint between current point and chosen vertex
current_point = ((current_point[0] + chosen_vertex[0]) // 2,
(current_point[1] + chosen_vertex[1]) // 2)
# Draw the point (using a small rectangle as a pixel)
screen.fill((255, 255, 255), (current_point[0], current_point[1], 1, 1))
# Update display
pygame.display.flip()
# Limit to 60 frames per second
clock.tick()
pygame.quit()