/***  L-SYSTEM-BEISPIELE FUER GROGRA: INTERPRETATIONSREGELN, EXPAND, ***/
/***  SENSITIVITAET, OBJEKTREFERENZEN                                ***/


/************************ interpr.lsy ********************************/
* # t(100) [ RU45 b ] *,
b # t(80) b,

/* t(x) ## F(x), */

/* t(x) ## [ + F(2) - F(x) S(1) ] - F(2) + F(x) + F(2) S(2) [ C(1,2) ] -, */

t(x) ## f(x*0.25)
        [ RU-85 F(x*0.15) RU20 F(x*0.1) RU25 F(x*0.1) ]
        [ RU85 F(x*0.15) RU-20 F(x*0.1) RU-25 F(x*0.1) ]
        f(x*0.25) F(x*0.1) f(x*0.15)
        [ - f(x*0.1) RU40 F(x*0.07) RU-80 F(x*0.1) ]
        [ + f(x*0.1) RU-40 F(x*0.07) RU80 F(x*0.1) ]
        f(x*0.25),


/************************ expand.lsy *********************************/
* # E(5) < a >,
a # F [ RU45 b ] a,
b # F b


/************************ expand2.lsy ********************************/
/* Spross mit akrotoner, gegenstaendiger Verzweigung
   und Achsentrend, auf Internodienbasis
   (Wachstum in Jahresschritten) */
\var d depth,

* # b(5),
(d=0) b(n) # E(n+1) < j(n,n) >, /* n: physiolog. Alter */
(n=0) j(m,n) # b(m),   
      j(m,n) # i [ RU40 b(m-n) ] [ RU-40 b(m-n) ] j(m,n-1),

i ## F,        /* Internodium */
b(n) ## P4 L*0.1 F  /* Knospe */


/************************ expand3.lsy ********************************/
/* wie expand2, mit Koch-Kurven als Knospen */

\winkel 60,
\var d depth,

* # b(5),
(d=0) b(n) # E(n+1) < j(n,n) >, 
(n=0) j(m,n) # b(m),   
      j(m,n) # i [ RU40 b(m-n) ] [ RU-40 b(m-n) ] j(m,n-1),

i ## F,        /* Internodium */
b(n) ## P7 L*0.5 E(3) < k >,

k # a F,
a # a L*0.3333,
F # F - F + + F - F  /* Iteration fuer Koch-Kurve */


/************************ laub2.lsy **********************************/
/* Modell-Jahrestrieb mit Akrotonie, Neoformation und Heterophyllie */

/* ak: apikale Knospe,
   lm: laterales Meristem,
   s:  fertiges Internodium,
   b:  regulaeres Blatt,
   b': Blatt im neoformierten Sprossteil  */

\const w 10,
\const a 1.15,
\var k distribution 0 0 0.2 0 0 0 0 0 0 0.8,
\var i index,
* # ak(8),
(v>=5) ak(v) # L100 &(v) < RH180 RU(w) L*(a) s(1,1) [ RU70 b ]
 [ RU50 E(1) < lm(i,v) > ] RU(-w) >  /* praeformierter Teil */
 &(k) < RH180 s(1,1) [ RU85 b' ]     /* neoformierter Teil  */
 [ RU50 E(1) < lm(v-1,v) > ] >
 RH180 s(1,0.5) [ RU(w) b' ] ak(v-1),
(v>=0) ak(v) # L100 &(v) < RH180 RU(w) L*(a) s(1,1) [ RU70 b ]
 [ RU50 E(1) < lm(i,v) > ] RU(-w) > /* nur praeformierter Teil */
 RH180 s(1,0.5) [ RU(w) b ] ak(v-1),

/* mit Syllepsis:
(j > v/2-2 && j < v/2+2) lm(j,v) # L90 RU(-w) s(1,2.5) RU(w)
 &(3) < RH180 RU(w) L*(a) s(1,1)
 [ RU70 b ] [ RU50 ak(3) ] RU(-w) >
 RH180 s(1,0.5) [ RU(w) b ] ak(j-2),  
*/

lm(j,v) # ak(j-2),
s(m,n) # s(m+1,n),
b # ,
b' # ,
b ## L*0.5 F [ RU100 F RU-70 L*1.7 F S(1) ] [ RU-100 F RU70 L*1.7 F S(2) ]
 L*3 f S(3) C(1,3) C(2,3),
b' ## L*0.8 F [ RU70 F RU-60 L*1.2 F S(1) ] [ RU-70 F RU60 L*1.2 F S(2) ]
 L*2 f S(3) C(1,3) C(2,3),
s(m,n) ## Dl(m*3) F*(n),  /* Dickenwachstum */


/********************** objbsp.lsy  *************************************/
/* wie expand3.lsy, jedoch mit Objektreferenzen realisiert */

\winkel 60,
\var d depth,
\axiom k 3,
\axiom * 1-3,

* # b(5),
(d=0) b(n) # E(n+1) < j(n,n) >, 
(n=0) j(m,n) # b(m),   
      j(m,n) # i [ RU40 b(m-n) ] [ RU-40 b(m-n) ] j(m,n-1),

i ## F,        /* Internodium */
b(n) ## L*0.007 D1 O(k, 3),   /* Link zu shared object "k" */

k # P7 a F,
a # a L*0.3333,
F # F - F + + F - F  /* Iteration fuer Koch-Kurve */


/************************ bu4.lsy ****************************************/
/* Jahrestriebe der Rotbuche, mit Knospen- und Blattstadium (bud, leaf)  */

\var l1 table 8 9 11 14 17 16 14,    /* leaf description:         */
\var l2 table 40 44 44 40 31 20 9,   /* lengths inside leaf blade */
\var l3 table 10 11 12 15 17 15 13,
\var l4 table 24 35 38 35 27 17 7,
\var i index,
\angle 5,               /* zigzag growth   */
\var x1 normal 40 5,    /* branching angle */
\const bl 35,           /* length conversion factor internode/leaf */
\const minlf 15,        /* minimal leaf length */
\const cf 0.2,          /* coefficient in leaf length estimation   */
\const secgr 1.6,       /* strength of secondary growth */
\var len length,
\axiom veg 1 2,         /* vegetative production:  bud, leaf */
\axiom shoot 1-8,       /* half-annual steps of shoot development */
veg # bud,
bud # leaf,
leaf # ,
bud ## P12 [ RU-90 F1 S(0) ] RU90 F1 S(1) RU-132 F3.8 S(2) f-0.8 RU88
	F4 S(3) f-0.8 RU-84 F4.7 S(4) RU52 F7.2 S(5) C(0,2) C(2,4)
	C(5,3) C(3,1),
leaf ## P2 D1 F12 D0 [ S(0) [ RU58 f(15) S(1) ] [ RU53 f(30) S(2) ]
     &(7) < F(l1(i)) [ RU(55-4*i) F(l2(i)) S(i+3) ] > F11 S(10) ]
     [ RU-45 f(15) S(18) ]
     &(7) < f(l3(i)) [ RU(4*i-55) F(l4(i)) S(17-i) ] >
     &(18) < C(i, i+1) > C(18, 0),
shoot # L(bl) D+1.2 m(1, 9),        /* growth starts with 9 internodes */
(j<2) m(j, n) # m(j+1, n),
(j=2 && n>1)  m(j, n) # L*0.68
 &(n-1) < - a(0) RH180 - [ RU(x1) ang m(1, if(i<(n-1)/2,i/2,i-1)) ] L*1.1 >
 - L*0.5 a(0) RH180 - L*1.7 m(1, n),     /* main rule for shoot growth */
(j=2 && n<=1) m(j, n) # L*0.4 a(0) L*2 m(1, 1),
ang # RU10,
a(t) # a(t+0.5),
a(t) ## Dl+(secgr * t) F,                              /* internode */
m(j, n) ## Ll(len/bl + 1/(cf*len+1/minlf)) Dl1 O(veg, j)



/*********************** neigung.ssy ***********************************/
/* benutzt sensitive Funktion Nummer 7: Neigung zur Vertikalen */

\var startw user_request,
\var f function 7 0, /* Funktion hat 0 Argumente innerhalb des L-Syst. */
\var pos uniform 0.5 1,  /* Bereich, wo Seitenknospen liegen koennen   */
\var a distribution 0 0 0 0 0.25 0.5 0.25, 
\var rot uniform 0 360,
\var i index,
\askrandomseed,
* # D1 RU(-startw) b(1,0),
b(v,n) # RV(-0.015*n) gu(v) RH(rot) &(a*v) < [ @(pos) RH(i*137.5)
	    RU(145-100*pos_) b((1.6*pos_-0.6)*v, f) ] >,
gu(v)  ## L(100*v) F,    /* growth unit; Wachstumseinheit */
b(v,n) ## Pl4 Ll*0.04 F  /* Knospe */


/********************** schattkon.ssy *********************************/
/* 2D-Beispiel. Benutzt sensitive Funktion Nummer 1: max. freier
   Oeffnungswinkel eines Lichtkegels um die Vertikale. 7 Baeume
   (lasse 30 Schritte laufen, um Konkurrenzeffekte zu beobachten)     */

\tsp,
\const Nmax 5,
\var f1 function 1 1,  /* shadow sensitivity (light cone function) */
\var f3 function 3 0,  /* function gives back sum of leaf mass */
\const rf1 40,  /* necessary open angle of light cone above bud */
\var lst uniform 80 120,
\var lsa uniform 60 80,
\var fak uniform 0.5 1.0,
\var n n_value,
\var su uniform 0.9 0.7,
\set V -0.2,  /* strength of orthotropic tendency */
* # P2 D1            [ a(0,fak) RH-90 tk ]
   RU90  f1500 RU-90 [ a(0,fak) RH-90 tk ]
   RU-90 f500  RU90  [ a(0,fak) RH-90 tk ]
   RU-90 f500  RU90  [ a(0,fak) RH-90 tk ]
   RU-90 f1000 RU90  [ a(0,fak) RH-90 tk ]
   RU-90 f500  RU90  [ a(0,fak) RH-90 tk ]
   RU-90 f500  RU90  [ a(0,fak) RH-90 tk ]
   RU-90 f500  RU180 P6 F4000,
(stop < 0) a(stop,vit) # a(stop + 1,vit),
(f1(40) > rf1 && stop >= 0) a(stop,vit) # P2 L(lst*vit) seg(1.8, 0, stop)
  [ @(su) RU70  D1 RH-90 b1(vit) tk ]
  [ @(su) RU-70 D1 RH-90 b1(vit) tk ] f0.001 a(stop + 1,vit),
(f1(40) > rf1)    b1(vit)    # P2 seg(0.8,0,-1) L(lsa*vit) RV f0.001 b1(vit),
(f3 >= 5)         seg(s,t,o) # seg(s,t+1,o),
(f3 < 5 && o < 0) seg(s,t,o) # %,
(f3 < 5 && o = 0) seg(s,t,o) # P15 D(1+(s*t)) F*0.5 RL100 RU90 F*0.5,
(t= Nmax)        seg(s,t,o) ## P15 N(0) Dl(1+(s*t)) F,
tk ## [ P6 D0.5 L3 RH90 RU-90 f*0.5 RU180 F RU-104.477 F*2 RU-151.045 F*2 ]



 

Zurück zur Veranstaltungs-Seite "Strukturmodelle"

Zur Seite der Arbeitsgruppe Pflanzenmodellierung

 

Letzte Änderungen: 24. 5. 2000