-
Notifications
You must be signed in to change notification settings - Fork 0
/
sierpinski.py
34 lines (27 loc) · 1.09 KB
/
sierpinski.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import turtle
def drawing_triangle(points, color, my_turtle):
my_turtle.fillcolor(color)
my_turtle.up()
my_turtle.goto(points[0][0],points[0][1])
my_turtle.down()
my_turtle.begin_fill()
my_turtle.goto(points[1][0],points[1][1])
my_turtle.goto(points[2][0],points[2][1])
my_turtle.goto(points[0][0],points[0][1])
my_turtle.end_fill()
def get_mid(p1, p2):
return ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2)
def sierpinski(points, degree, my_turtle):
color_map = ['blue','red','yellow','violet', 'green', 'orange']
drawing_triangle(points, color_map[degree], my_turtle)
if degree > 0:
sierpinski([points[0], get_mid(points[0], points[1]),get_mid(points[1], points[1])], degree-1, my_turtle)
sierpinski([points[1], get_mid(points[0], points[1]),get_mid(points[1], points[2])], degree-1, my_turtle)
sierpinski([points[2], get_mid(points[2], points[1]),get_mid(points[0], points[2])], degree-1, my_turtle)
def main():
my_turtle = turtle.Turtle()
my_win = turtle.Screen()
my_points = [[-100, -50], [0, 100], [100, -50]]
sierpinski(my_points, 3, my_turtle)
my_win.exitonclick()
main()