View difference between Paste ID: 0mMDLHCQ and Ubc7Dtaq
SHOW: | | - or go back to the newest paste.
1
from turtle import *
2
3
4
axiomA='A'
5
rulesA = {}
6
rulesA['A'] = 'AB'
7
rulesA['B'] = 'A'
8
9
axiomB='B'
10
rulesB = {}
11
rulesB['B'] = 'BA'
12
rulesB['A'] = 'B'
13
14
axiomF='F'
15
rulesF = {}
16
rulesF['F'] = 'F+F-F-F+F'
17
turtleRulesF = {}
18
turtleRulesF['F'] = 'forward(10)'
19
turtleRulesF['+'] = 'left(90)'
20
turtleRulesF['-'] = 'right(90)'
21
22
axiomS='A'
23
rulesS = {}
24
rulesS['A'] = 'B-A-B'
25
rulesS['B'] = 'A+B+A'
26
turtleRulesS = {}
27-
turtleRulesS['A'] = 'forward(5)'
27+
turtleRulesS['A'] = 'forward(3)'
28-
turtleRulesS['B'] = 'forward(5)'
28+
turtleRulesS['B'] = 'forward(3)'
29
turtleRulesS['+'] = 'left(60)'
30
turtleRulesS['-'] = 'right(60)'
31
32
axiomD='FX'
33
rulesD={}
34
rulesD['X']='X+YF'
35
rulesD['Y']='FX-Y'
36
turtleRulesD={}
37
turtleRulesD['F'] = 'forward(5)'
38
turtleRulesD['-'] = 'left(90)'
39
turtleRulesD['+'] = 'right(90)'
40
turtleRulesD['X'] = 'nul'
41
turtleRulesD['Y'] = 'nul'
42
43
44
def compose(axiom, rules):
45
        output = ""
46
        for i in axiom:
47
            output = output + rules.get(i,i)
48
        return output
49
50
def iterate(axiom,rules, times):
51
    output = ''
52
    if times == 0:
53
        output = axiom
54
    else:
55-
        eval(turtleRules[words])
55+
56
    return output
57
58-
setx(-200)
58+
59
#print iterate(axiomB,rulesA,6)
60-
begin_fill()
60+
61-
evaluate(axiomS,rulesS,turtleRulesS,6)
61+
62-
end_fill()
62+
63
def evaluate(axiom,rules,turtleRules,times):
64
    for words in iterate(axiom,rules,times):
65
        if turtleRules[words] != 'nul':
66
            eval(turtleRules[words])
67
screensize(800,800)
68
speed(0)
69
pu()
70
#setx(-400)
71
#sety(-400)
72
pd()
73
color('red','yellow')
74
#begin_fill()
75
#evaluate(axiomS,rulesS,turtleRulesS,6)
76
evaluate(axiomD,rulesD,turtleRulesD,10)
77
#end_fill()
78
done()
79
80
#special thanks to http://www.4dsolutions.net/ocn/lsystems.html