Skip to content

Commit 45d6815

Browse files
author
Jakub Klinkovský
committed
updated to use library
1 parent 0563de1 commit 45d6815

6 files changed

Lines changed: 91 additions & 196 deletions

File tree

fractals/H-tree.py

Lines changed: 27 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,38 @@
11
#!/usr/bin/env python
22

3-
from turtle import *
4-
import random
3+
import builtins
4+
import turtle as t
5+
import math
56

6-
def zelva(level, size, angle=90, par=1/sqrt(2)):
7-
if level <= 0:
8-
return
7+
import _lib
98

10-
forward(size)
11-
left(angle)
12-
zelva(level-1, size * par, angle, par)
13-
right(angle * 2)
14-
zelva(level-1, size * par, angle, par)
15-
left(angle)
16-
backward(size)
17-
18-
def stochastic(level, size, angle, par, factor=0.3):
19-
if level <= 0:
9+
builtins.iteration = 10
10+
builtins.position = (0, -300)
11+
builtins.heading = 90
12+
builtins.size = 300
13+
14+
def h_tree(iteration, size, angle=90, par=1/math.sqrt(2)):
15+
if iteration == 0:
2016
return
2117

22-
size2 = size * (1 + random.randrange(-factor, factor, int=float))
23-
angle2 = angle * (1 + random.randrange(-factor, factor, int=float))
24-
forward(size2)
25-
left(angle2)
26-
stochastic(level-1, size * par, angle, par, factor)
27-
right(angle2 * 2)
28-
stochastic(level-1, size * par, angle, par, factor)
29-
left(angle2)
30-
backward(size2)
18+
t.forward(size)
19+
t.left(angle)
20+
h_tree(iteration-1, size * par, angle, par)
21+
t.right(angle * 2)
22+
h_tree(iteration-1, size * par, angle, par)
23+
t.left(angle)
24+
t.backward(size)
3125

32-
tracer(600, 0)
33-
speed(0)
34-
hideturtle()
35-
36-
# go to start
37-
left(90)
38-
penup()
39-
backward(300)
40-
pendown()
41-
42-
## klasický H-strom
43-
#zelva(10, 300, angle=90, par=1/sqrt(2))
26+
_lib.init()
4427

45-
## pootočený H-strom
46-
#zelva(10, 300, angle=85, par=0.69)
28+
## classic H-tree
29+
h_tree(iteration, size, angle=90, par=1/math.sqrt(2))
4730

48-
## Pythagorův strom
49-
zelva(10, 200, angle=45, par=1/sqrt(2))
31+
## different angle
32+
#h_tree(iteration, size, angle=85, par=0.69)
5033

51-
## stochastický H-strom (factor - max. odchylka)
52-
#stochastic(10, size=200, angle=45, par=1/sqrt(2), factor=0.3)
34+
## Pythagoras tree
35+
#builtins.size = 200
36+
#h_tree(iteration, size, angle=45, par=1/math.sqrt(2))
5337

54-
update()
55-
exitonclick()
38+
_lib.exit()

fractals/H-tree_stochastic.py

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,31 @@
11
#!/usr/bin/env python
22

3-
from turtle import *
3+
import builtins
4+
import turtle as t
45
import math
56
import random
67

7-
start_position = (0, -300)
8-
start_heading = 90
9-
size = 200
8+
import _lib
109

11-
def stochastic(level, size, angle, par, factor=0.3):
12-
if level <= 0:
10+
builtins.iteration = 10
11+
builtins.position = (0, -300)
12+
builtins.heading = 90
13+
builtins.size = 200
14+
15+
def stochastic(iteration, size, angle, par, factor=0.3):
16+
if iteration == 0:
1317
return
1418

1519
size2 = size * (1 + random.uniform(-factor, factor))
1620
angle2 = angle * (1 + random.uniform(-factor, factor))
17-
forward(size2)
18-
left(angle2)
19-
stochastic(level-1, size * par, angle, par, factor)
20-
right(angle2 * 2)
21-
stochastic(level-1, size * par, angle, par, factor)
22-
left(angle2)
23-
backward(size2)
21+
t.forward(size2)
22+
t.left(angle2)
23+
stochastic(iteration-1, size * par, angle, par, factor)
24+
t.right(angle2 * 2)
25+
stochastic(iteration-1, size * par, angle, par, factor)
26+
t.left(angle2)
27+
t.backward(size2)
2428

25-
tracer(600, 0)
26-
speed(0)
27-
hideturtle()
28-
penup()
29-
setpos(start_position)
30-
setheading(start_heading)
31-
pendown()
32-
33-
stochastic(10, size=200, angle=45, par=1/math.sqrt(2), factor=0.3)
34-
35-
update()
36-
exitonclick()
29+
_lib.init()
30+
stochastic(iteration, size, angle=45, par=1/math.sqrt(2), factor=0.3)
31+
_lib.exit()

fractals/caesaro_fractal.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import _lib
77
from koch_curve import koch_curve
88

9-
109
def caesaro(iteration, size):
1110
for i in range(4):
1211
koch_curve(iteration, size, 85)

fractals/dragon_curve.py

Lines changed: 18 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,102 +1,26 @@
11
#!/usr/bin/env python
22

3-
from turtle import *
4-
import time
3+
import builtins
4+
import turtle as t
55
import math
66

7+
import _lib
78

8-
def dragon(iteration, step, direction=1):
9-
if iteration <= 0:
10-
forward(step)
11-
return
12-
13-
right(45 * direction)
14-
dragon(iteration-1, step / math.sqrt(2), 1)
15-
left(90 * direction)
16-
dragon(iteration-1, step / math.sqrt(2), -1)
17-
right(45 * direction)
9+
builtins.iteration = 18
10+
builtins.position = (-200, 100)
1811

19-
# "backwards" (swapped direction)
20-
def dragon2(iteration, step, direction=1):
21-
if iteration <= 0:
22-
forward(step)
23-
return
24-
25-
right(45 * direction)
26-
dragon2(iteration-1, step / math.sqrt(2), -1)
27-
left(90 * direction)
28-
dragon2(iteration-1, step / math.sqrt(2), 1)
29-
right(45 * direction)
12+
def dragon_curve(iteration, size, direction=1, swap=False):
13+
if iteration == 0:
14+
t.forward(size)
3015

31-
colors = ["#4bd31f", "#3eff00", "#2bb200", "#90ff45"] * 30
32-
def changeColor():
33-
pencolor(colors.pop())
34-
def doprava(drak=dragon):
35-
changeColor()
36-
setheading(0)
37-
drak(17, 300)
38-
def nahoru(drak=dragon):
39-
changeColor()
40-
setheading(90)
41-
drak(17, 300)
42-
def doleva(drak=dragon):
43-
changeColor()
44-
setheading(180)
45-
drak(17, 300)
46-
def dolu(drak=dragon):
47-
changeColor()
48-
setheading(270)
49-
drak(17, 300)
50-
51-
tracer(600, 0)
52-
speed(0)
16+
else:
17+
t.right(45 * direction)
18+
dragon_curve(iteration-1, size / math.sqrt(2), int(not swap) - int(swap), swap)
19+
t.left(90 * direction)
20+
dragon_curve(iteration-1, size / math.sqrt(2), int(swap) - int(not swap), swap)
21+
t.right(45 * direction)
5322

54-
def run1():
55-
for i in xrange(15):
56-
reset()
57-
hideturtle()
58-
penup()
59-
setpos(-200, 100)
60-
pendown()
61-
dragon(i, 470)
62-
update()
63-
time.sleep(1)
64-
exitonclick()
65-
66-
def run2():
67-
tracer(600, 0)
68-
speed(0)
69-
hideturtle()
70-
71-
for drak in [doprava, nahoru, doleva, dolu]:
72-
penup()
73-
home()
74-
pendown()
75-
drak(dragon2)
76-
update()
77-
exitonclick()
78-
79-
#run1()
80-
#run2()
81-
82-
# export
83-
size = 1600
84-
border = 10
85-
color = "blue"
86-
for i in range(0,17):
87-
screensize(size, size)
88-
hideturtle()
89-
pensize(3)
90-
pencolor(color)
91-
fillcolor(color)
92-
penup()
93-
goto(-window_width()/2+size/4.1, window_height()/2-size*0.4)
94-
pendown()
95-
96-
dragon(i, size/1.55)
97-
update()
98-
99-
cv = getcanvas()
100-
cv.postscript(file="/media/data/Bordýlek/Dračí křivka/dragon-"+color+"-"+str(i+1)+".ps", width=size+2*border, height=size+2*border)
101-
102-
reset()
23+
if __name__ == "__main__":
24+
_lib.init()
25+
dragon_curve(iteration, size)
26+
_lib.exit()

fractals/dragon_curve_animation.py

Lines changed: 0 additions & 32 deletions
This file was deleted.

fractals/dragon_curve_tiling.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env python
2+
3+
import builtins
4+
import turtle as t
5+
import math
6+
7+
import _lib
8+
from dragon_curve import dragon_curve
9+
10+
builtins.iteration = 16
11+
builtins.position = (0, 0)
12+
builtins.size = 300
13+
14+
colors = ["#4bd31f", "#3eff00", "#2bb200", "#90ff45"] * 30
15+
def changeColor():
16+
t.pencolor(colors.pop())
17+
18+
_lib.init()
19+
for heading in [0, 90, 180, 270]:
20+
t.penup()
21+
t.home()
22+
t.setheading(heading)
23+
changeColor()
24+
t.pendown()
25+
dragon_curve(iteration, size, swap=True)
26+
_lib.exit()

0 commit comments

Comments
 (0)