Created
March 31, 2025 21:57
-
-
Save orjanv/796286c8d474efe08c792fd2190680ba to your computer and use it in GitHub Desktop.
Sierpinski triangle with Python turtle
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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