summaryrefslogtreecommitdiff
path: root/L-system/models/airhorse/airhorse.factor
blob: 07f42241555a98f9b0f3eaa99b3f603b39fac597 (plain)
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
USING: accessors ui L-system ;

IN: L-system.models.airhorse

! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

: airhorse ( <L-system> -- <L-system> )

  L-parser-dialect >>commands

  [ 10 >>angle ] >>turtle-values

  "C" >>axiom

  {
    { "C" "LBW" }

    { "B" "[[''aH]|[g]]" }
    { "a" "Fs+;'a" }
    { "g" "Ft+;'g" }
    { "s" "[::cc!!!!&&[FFcccZ]^^^^FFcccZ]" }
    { "t" "[c!!!!&[FF]^^FF]" }

    { "L" "O" }
    { "O" "P" }
    { "P" "Q" }
    { "Q" "R" }
    { "R" "U" }
    { "U" "X" }
    { "X" "Y" }
    { "Y" "V" }
    { "V" "[cc!!!&(90)[Zp]|[Zp]]" }
    { "p" "h>(120)h>(120)h" }
    { "h" "[+(40)!F'''p]" }

    { "H" "[cccci[>(50)dcFFF][<(50)ecFFF]]" }
    { "d" "Z!&Z!&:'d" }
    { "e" "Z!^Z!^:'e" }
    { "i" "-:/i" }

    { "W" "[%[!!cb][<<<!!cb][>>>!!cb]]" }
    { "b" "Fl!+Fl+;'b" }
    { "l" "[-cc{--z++z++z--|--z++z++z}]" }
  }
    >>rules ;

! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

: main ( -- ) [ L-system airhorse "L-system" open-window ] with-ui ;

MAIN: main