diff --git a/contrib/lindenmayer/lindenmayer.factor b/contrib/lindenmayer/lindenmayer.factor index 7aa1b2a7d9..03418446bb 100644 --- a/contrib/lindenmayer/lindenmayer.factor +++ b/contrib/lindenmayer/lindenmayer.factor @@ -258,8 +258,6 @@ H{ { "+" [ angle get turn-left ] } } command-table set ; -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! Examples ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! VAR: axiom @@ -273,6 +271,95 @@ VAR: result ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +VAR: model + +: init-model ( -- ) 1 glGenLists >model ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: display ( -- ) + +black gl-clear-color + +GL_FLAT glShadeModel + +GL_PROJECTION glMatrixMode +glLoadIdentity +-1 1 -1 1 1.5 200 glFrustum + +GL_MODELVIEW glMatrixMode + +glLoadIdentity + +[ do-look-at ] camera> with-turtle + +GL_COLOR_BUFFER_BIT glClear + +GL_FRONT_AND_BACK GL_LINE glPolygonMode + +white gl-color +GL_LINES glBegin { 0 0 0 } gl-vertex { 0 0 1 } gl-vertex glEnd + +color-index> set-color-index + +model> glCallList ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: init-turtle ( -- ) >turtle ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: init-camera ( -- ) >camera ; + +: reset-camera ( -- ) [ +reset-turtle +45 turn-left +45 pitch-up +5 step-turtle +180 turn-left +] camera> with-turtle ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: init-slate ( -- ) + >slate +namespace slate> set-slate-ns +slate> "L-system" open-titled-window +[ display ] >action ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: init ( -- ) +init-turtle +init-turtle-stack +init-camera reset-camera +init-model + +2 >color-index +init-color-table + +init-slate ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: result>model ( -- ) +[ model> GL_COMPILE glNewList result> interpret glEndList ] >action .slate ; + +: build-model ( -- ) +reset-state-stack +reset-vertices +reset-turtle +default-values> call +model-values> call +result>model +3000 sleep +[ display ] >action .slate ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Examples +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + : koch ( -- ) lparser-dialect [ 90 >angle ] >model-values H{ { "K" "[[a|b] '(0.41)f'(2.439) |<(60) [a|b]]" } @@ -473,93 +560,6 @@ H{ { "C" "LBW" } ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -VAR: model - -: init-model ( -- ) 1 glGenLists >model ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: display ( -- ) - -black gl-clear-color - -GL_FLAT glShadeModel - -GL_PROJECTION glMatrixMode -glLoadIdentity --1 1 -1 1 1.5 200 glFrustum - -GL_MODELVIEW glMatrixMode - -glLoadIdentity - -[ do-look-at ] camera> with-turtle - -GL_COLOR_BUFFER_BIT glClear - -GL_FRONT_AND_BACK GL_LINE glPolygonMode - -white gl-color -GL_LINES glBegin { 0 0 0 } gl-vertex { 0 0 1 } gl-vertex glEnd - -color-index> set-color-index - -model> glCallList ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: init-turtle ( -- ) >turtle ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: init-camera ( -- ) >camera ; - -: reset-camera ( -- ) [ -reset-turtle -45 turn-left -45 pitch-up -5 step-turtle -180 turn-left -] camera> with-turtle ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: init-slate ( -- ) - >slate -namespace slate> set-slate-ns -slate> "L-system" open-titled-window -[ display ] >action ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: init ( -- ) -init-turtle -init-turtle-stack -init-camera reset-camera -init-model - -2 >color-index -init-color-table - -init-slate ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: result>model ( -- ) -[ model> GL_COMPILE glNewList result> interpret glEndList ] >action .slate ; - -: build-model ( -- ) -reset-state-stack -reset-vertices -reset-turtle -default-values> call -model-values> call -result>model -3000 sleep -[ display ] >action .slate ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! These should be moved into a separate file. They are used to pretty ! print matricies and vectors.