/*** 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