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 |