-
Notifications
You must be signed in to change notification settings - Fork 1
/
bank_lsystem
64 lines (55 loc) · 1.44 KB
/
bank_lsystem
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Von_koch {
axiom = f(0.5) - f(0.05) +(30) F(0.8) -(120) F(0.8) -(120) F(0.8)
rule F(l) = F(l/3) +(60) F(l/3) -(120) F(l/3) +(60) F(l/3)
}
Von_koch_color {
def C(d) = Color(0,d,0.1,1)
def FF(l,d,k) = Forward(l)
axiom = - f(0.28) + f(0.05) FF(0.9,0,0.9)
rule FF(l,d,k) =
C(d) FF(l/3, d, k/4) +(60)
C(d + k/4) FF(l/3, d + k/4, k/4) -(120)
C(d + k/2) FF(l/3, d + k/2, k/4) +(60)
C(d + 3/4*k) FF(l/3, d + 3/4*k, k/4)
}
Von_koch_bench {
def tplus = Turn(60)
def tmoins = Turn(- 120)
axiom = - f(0.5) + F(1)
rule F(l) = F(l/3) tplus F(l/3) tmoins F(l/3) tplus F(l/3)
}
Von_koch_simple {
axiom = - f(0.5) + F(1)
rule F(l) = F(l/3) +(60) F(l/3) -(120) F(l/3) +(60) F(l/3)
}
dragon {
def X(d) Y(d) *
axiom = -(45) f(0.47) * F(0.6) X(0.6)
rule X(l) = X(l/sqrt(2)) + Y(l/sqrt(2)) F(l/sqrt(2)) +
rule Y(l) = -(90) F(l/sqrt(2)) X(l/sqrt(2)) -(90) Y(l/sqrt(2))
rule F(l) = F(l/sqrt(2))
rule * = * -(45)
}
Tetradragon {
def a
axiom = -(45) f(0.1) a F(1.1)
rule F(l) = F(l/2.23) + F(l/2.23) -(90) F(l/2.23)
rule a = a -(26.5)
}
fern {
def X(d)
axiom = f(0.5) -(90) f(1) -(180) X(0.3)
rule X(x) =
F(x/2) -(25) [ [ X(x/2) ] +(25) X(x/2) ]
+(25) F(x/2) [ +(25) F(x/2) X(x/2) ] -(25) X(x/2)
}
Spin_it {
def X(l)
def Square(l) = Save Turn(45) forward(l*sqrt(2)/2)
Turn(-135) Forward(l)
Turn(-90) Forward(l)
Turn(-90) Forward(l)
Turn(-90) Forward(l) Restore
axiom = - f(0.5) + f(0.5) X(0.01)
rule X(l) = Square(l) +(2) X(l + 0.01)
}