Skip to content

Instantly share code, notes, and snippets.

@orjanv
Created March 31, 2025 21:57
Show Gist options
  • Save orjanv/796286c8d474efe08c792fd2190680ba to your computer and use it in GitHub Desktop.
Save orjanv/796286c8d474efe08c792fd2190680ba to your computer and use it in GitHub Desktop.
Sierpinski triangle with Python turtle
from turtle import *
from random import choice
# Generere Sierpinski-triangelet, en velkjent fraktal med turtle
# Sett opp litt turtlevinduting
sb, sh = 1800, 1000
setup(sb, sh)
tracer(0) # sett til 0 for å tegne umiddelbart, da betyr speed() ingenting
speed('slow')
hideturtle()
# Funksjon som tegner en runding
def tegnpunkt(posisjon, størrelse=5, farge="green"):
penup()
setpos(posisjon)
pendown()
dot(størrelse, farge)
# Regn ut hjørneposisjonene til trekantens
b = 50 # luft rundt trekanten
corners = ((0, sh/2-b), (-sb/2+b, -sh/2+b), (sb/2-b, -sh/2+b))
[tegnpunkt(i, 10, "black") for i in corners]
# Tegn et "tilfeldig" startpunkt inne i trekanten
tegnpunkt((-300, -100), 5, "red")
# Her starter magien
for i in range(100): # Hvor detaljert vil du ha det?
# Velg et hjørne og hent nåværende posisjonen
rposx, rposy = choice(corners)
posx, posy = pos()
# Finn midtpunktet mellom nåværende og tilfeldig valgt hjørne
newposx = (((rposx - posx) / 2) + posx)
newposy = (((rposy - posy) / 2) + posy)
newpos = (newposx, newposy)
# Tegn et punkt i ny beregnet posisjon
tegnpunkt(newpos, 5, "green")
exitonclick()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment