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