! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TUPLE: <L-system> < gadget
- camera display-list pedestal paused commands axiom rules string ;
+ camera display-list pedestal paused
+ turtle-values
+ commands axiom rules string ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
L-SYSTEM display-list>> GL_COMPILE glNewList
turtle
+ L-SYSTEM turtle-values>> [ ] or call
L-SYSTEM string>> L-SYSTEM axiom>> or
L-SYSTEM commands>>
interpret-string
{ T{ key-down f f "q" } [ [ 5 roll-left ] with-camera ] }
{ T{ key-down f f "w" } [ [ 5 roll-right ] with-camera ] }
+ { T{ key-down f { A+ } "LEFT" } [ [ 1 strafe-left ] with-camera ] }
+ { T{ key-down f { A+ } "RIGHT" } [ [ 1 strafe-right ] with-camera ] }
+ { T{ key-down f { A+ } "UP" } [ [ 1 strafe-up ] with-camera ] }
+ { T{ key-down f { A+ } "DOWN" } [ [ 1 strafe-down ] with-camera ] }
+
{ T{ key-down f f "r" } [ start-rotation-thread ] }
{
L-parser-dialect >>commands
+ [ 30 >>angle ] >>turtle-values
+
"c(12)FAL" >>axiom
{
- { "A" "F[&'(.7)!BL]>(137)[&'(.6)!BL]>(137)'(.9)!(.9)A" }
- { "B" "F[-'(.7)!(.9)$CL]'(.9)!(.9)C" }
- { "C" "F[+'(.7)!(.9)$BL]'(.9)!(.9)B" }
+ { "A" "F [&'(.7)!BL] >(137) [&'(.6)!BL] >(137) '(.9) !(.9) A" }
+
+ { "B" "F [- '(.7) !(.9) $ C L] '(.9) !(.9) C" }
+ { "C" "F [+ '(.7) !(.9) $ B L] '(.9) !(.9) B" }
{ "L" "~c(8){+f(.1)-f(.1)-f(.1)+|+f(.1)-f(.1)-f(.1)}" }
} >>rules ;
+
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: main ( -- ) [ L-system abop-2 "L-system" open-window ] with-ui ;
MAIN: main
-
\ No newline at end of file
L-parser-dialect >>commands
+ [ 30 >>angle ] >>turtle-values
+
"c(12)FA" >>axiom
{
L-parser-dialect >>commands
+ [ 18 >>angle ] >>turtle-values
+
"c(12)&(20)N" >>axiom
{
--- /dev/null
+
+USING: accessors ui L-system ;
+
+IN: L-system.models.abop-5-angular
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: abop-5-angular ( <L-system> -- <L-system> )
+
+ L-parser-dialect >>commands
+
+ "&(90)+(90)a" >>axiom
+
+ {
+ { "a" "F[+(45)l][-(45)l]^;ca" }
+
+ { "l" "j" }
+ { "j" "h" }
+ { "h" "s" }
+ { "s" "d" }
+ { "d" "x" }
+ { "x" "a" }
+
+ { "F" "'(1.17)F'(.855)" }
+ }
+ >>rules ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: main ( -- ) [ L-system abop-5-angular "L-system" open-window ] with-ui ;
+
+MAIN: main
+
\ No newline at end of file
L-parser-dialect >>commands
+ [ 5 >>angle ] >>turtle-values
+
"&(90)+(90)a" >>axiom
{
--- /dev/null
+
+USING: accessors ui L-system ;
+
+IN: L-system.models.abop-6
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: abop-6 ( <L-system> -- <L-system> )
+
+ L-parser-dialect >>commands
+
+ [ 5 >>angle ] >>turtle-values
+
+ ! "&(90)+(90)FFF[-(120)'(.6)x][-(60)'(.8)x][+(120)'(.6)x][+(60)'(.8)x]x"
+ "FFF[-(120)'(.6)x][-(60)'(.8)x][+(120)'(.6)x][+(60)'(.8)x]x"
+ >>axiom
+
+ {
+ { "a" "F[cdx][cex]F!(.9)a" }
+ { "x" "a" }
+
+ { "d" "+d" }
+ { "e" "-e" }
+
+ { "F" "'(1.25)F'(.8)" }
+ }
+ >>rules ;
+
+! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+: main ( -- ) [ L-system abop-6 "L-system" open-window ] with-ui ;
+
+MAIN: main
+
\ No newline at end of file