NNNNNNp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNY! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a ce`gikoq s@u`wy{} @` @ ` @ ` @ ` ! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a ce`gikoq s@u`wy{} @` @ ` @ ` @ ` IFS IFS_EDIT ׉mLEES DIT rHA173 tt . .. IFS GFABASROPRG )IFS GFA /Z8'IFS LST 5d#. .. FERN IFS GREIF IFS NORDLICHIFS WRANKE IFS wSIERPINSIFS _KIRLIAN IFS  `ZAHNRAD IFS  `ZOSCH IFS  ]TEST IFS  SNOWFLAKIFS  DRAGO IFS aFEDER IFS wGOTHIC IFS ALLEE IFS tBUSCH IFS HALO IFS tABALONE IFS ySCHWAN IFS vARCS IFS pDAGGER IFS BUSCH2 IFS -SPACESHPIFS 2BAROCK IFS INSEL IFS 0TRIANGELIFS 4,100000 0,0,0,0.16,0,0,0.01 0.2,-0.26,0.23,0.22,0,1.6,0.07 -0.15,0.28,0.26,0.24,0,0.44,0.07 0.85,0.04,-0.04,0.85,0,1.6,0.85 \FERN.IFS 2,100000 0.8660392761231,0.4053072376,-0.9297764858883,0.1020223994179,0.3105940818787,0.6796862483025,0.48 0.524907886982,0.4053072376,-0.9297764858883,0.1020223994179,0.9564170837402,0.8257609605789,0.51 \GREIF.IFS 2,100000 0.84,0,0,0.55,1.57,0,0.48 0.08,0.48,0.54,0.41,2.78,0.7,0.52 \NORDLICH.IFS 2,100000 0.56,0.56,-0.67,0.11,0.48,0.38,0.5444796490373 -0.24,0.26,-0.55,-0.92,2.51,2.94,0.4555203509627 RANKE.IFS 3,100000 0.5,0,0,0.5,0,0,0.33 0.5,0,0,0.5,1,0,0.33 0.5,0,0,0.5,0.5,0.5,0.34 \SIERPINS.IFS 2,100000 0.06,0.39,0.37,0.06,2.23,2.67,0.24 -0.82,0.53,0.19,0.85,1.82,0.97,0.76 KIRLIAN.IFS 2,100000 0.88,-0.78,0.54,0.58,0.72,2.43,0.76 0.24,0.41,0.27,0.34,1.83,2.01,0.24 ZAHNRAD.IFS 2,100000 0.96,0.04,0.32,-0.51,1.93,2.44,0.7 0.26,-0.18,0.21,0.78,0.97,2.66,0.3 ZOSCH.IFS 4,100000 0,0,0,0.16,0,0,0.1 0.8491586507298,0.03707506735809,-0.03707506735809,0.8491586507298,0,1.6,0.1 0.1968177087139,-0.2264128739946,0.2264128739946,0.1968177087139,0,1.6,0.2 -0.15,0.2834364439128,-0.2298133329023,0.2378314155946,0,0.44,0.6 TEST.IFS 6,100000 0.333,0,0,0.333,0,0,0.0476559048472 0.333,0,0,0.333,4,0,0.0476559048472 0.167,-0.5,0.167,0.167,1,1,0.04787078596637 0.167,0.5,-0.167,0.167,4,2,0.04787078596637 0.333,0,0,0.333,2,2,0.0476559048472 -0.333,0,0,-0.333,4,0,0.0476559048472 SNOWFLAK.IFS 2,100000 0.5,-0.5,0.5,0.5,0,0,0.2456519603026 0.5,-0.5,0.5,0.5,1,0,0.2456519603026 DRAGO.IFS 2,100000 0.21,-0.34,0.67,-0.78,0.55,2.65,0.07396301849075 0.69,0.65,0.72,-0.65,1.45,1.48,0.9260369815092 FEDER.IFS 3,100000 0.5,0,0,0.5,0,0,0.3623693379791 0.5,0,0,0.5,1,0,0.3623693379791 0.25,0,0,0.75,0.5,0.5,0.2752613240418 GOTHIC.IFS 2,100000 -0.47,0.7,-0.16,0.7,1.38,2.13,0.2395020046423 -0.72,0.92,0.17,0.77,3.08,0.15,0.7604979953577 ALLEE.IFS 3,100000 0.97,0.06,0.09,0.1,0.3,0.13,0.1165271246703 0.55,0.3,-0.39,0.73,0.45,2.05,0.6061474939787 -0.38,-0.19,0.28,0.75,1.57,1.77,0.2773253813511 BUSCH.IFS 2,100000 0.75,0.1,-0.38,-0.88,2.67,2.84,0.5029044322432 0.81,0.39,-0.06,0.73,2.46,2.89,0.4970955677568 HALO.IFS 2,100000 0.84,-0.43,0.17,0.98,1.32,1.07,0.7785413624259 0.24,-0.82,-0.15,-0.52,2.52,0.83,0.2214586375741 ABALONE.IFS 2,100000 0.48,0.57,-0.28,0.93,1.08,0.6,0.6403326403326 -0.2,-0.6,-0.59,-0.09,1.07,1.41,0.3596673596674 SCHWAN.IFS 2,100000 -0.06,0.17,0.08,0.58,0.8,1.91,0.06536825610029 -1,0.7,-0.15,0.93,1.8,0.97,0.9346317438997 ARCS.IFS 4,100000 0.5,0,0,0.5,0,0,0.2499999999981 0.3535533905961,-0.3535533905961,0.3535533905961,0.3535533905961,1,0,0.2500000000019 0.3535533905961,0.3535533905961,-0.3535533905961,0.3535533905961,0,1,0.2500000000019 0.5,0,0,0.5,1,1,0.2499999999981 DAGGER.IFS 3,100000 -0.07717845957726,-0.269153274931,0.0865135526564,-0.02480736200698,0.6,0.03,0.05595294866732 0.4325045289891,0.2702588248299,0.2967547880486,-0.4749069337919,1.82,2.01,0.4698776028799 0.2442833336443,-0.1908550573559,0.5725651720678,0.7328500009328,1.03,1.22,0.4741694484528 BUSCH2.IFS 6,100000 0,-0.3333333,0.3333333,0,0,0,0.0749656035052 0.3333333,0,0,0.3333333,0,0.3333333,0.0749656035052 0,0.3333333,-0.3333333,0,0.3333333,0.3333333,0.0749656035052 0.3333333,0,0,0.3333333,0.5,0,0.0749656035052 0.3333333,0,0,0.3333333,1,0,0.0749656035052 1,0,0,-1,0,0,0.625171982474 SPACESHP.IFS 2,100000 -0.9079702766519,-0.2432899023313,0.2432899023313,-0.9079702766519,0.92,2.69,0.8993558775985 0.08771151141264,0.286891426798,-0.286891426798,0.08771151141264,2.09,2.72,0.1006441224015 BAROCK.IFS 3,100000 0.4313351365272,-0.4313351365272,0.4313351365272,0.4313351365272,0.03,1.41,0.3671920046127 -0.08485281374305,-0.08485281374305,0.08485281374305,-0.08485281374305,2.65,0.46,0.02344801076288 0.5586143571418,0.5586143571418,-0.5586143571418,0.5586143571418,2.55,2.48,0.6093599846244 INSEL.IFS 2,100000 -0.452548339963,-0.452548339963,0.452548339963,-0.452548339963,1.39,1.84,0.4924304659078 -0.4596194077749,0.4596194077749,-0.4596194077749,-0.4596194077749,1.07,1.86,0.5075695340923 TRIANGEL.IFS ``BE3@A2CJfJVfNDE`4~WbTNu??/a":DB`~WbTNu??/a""&8:HSHoHo<EjCDEDF|d$NdTNd TTJFgNHD8HD`B|0bBed8BCHCd\d HD8HDdTTdTDуeJjDBNuQRB|cpNgDB`bDE 24NugDB`gDEHo<EgjCDEDF|0bVed8BCHCd\d HD8HDdTTdTDkcAр[SBk8JjDBNu|H@k0Ѐ[SBj`0`ޒDgdBDA@`ftNuk(g.JBjDBAр[SBDBjNuAр[SBkNuJlNu0gH@rJBk| JkЀ[`DBЀ[`J.gPpr4<NupNJBgVB&8TTDуdQRBNua JBjDBNugDBgkDE` DBDEaDBNugDBaDBNutNuHoHoE|z:g|HC҅H@:ۆ҄ۆ<HC>H@ЃdڼHA@B@H@хk HAҁHAрSB|bNuJBj4tNu~(WbTNu??/al&8:HSCDEJEoHnfNupNtNugDEDBHngDBE|kQ*HEJDg>?<>0rHGGdܼHGGdSWDуdi?<>0rHGGdܼHGGdSWDуdi?<>0rHGGdܼHGGdSWDуd&2 H@k Aр[SBkփjRAd RdQRBJjDBNutNu?<,>CEdGH@0r`|?<`|Aр&AdRAрAрDуNuprt|PQ< g<+g <-f<.g2<0< b<0e<9bda`RF`<.f<0e<9bdahSF`<Eg<efX<+g <-f<0e<9oSH`0<0< b&Hz<0< b E|o`\JjDDDS4<.aJFkSFk6aQa`(HL4FFaQ&8*L/a,H܆jDBJ.gtBnNu|?b4<rp¼Av JBlDBv-|JBgĴ|b̴|k(H>LaRRFBd&8*L?a<a6SF|e|gQRB`RAdRe <rRF&<<0xaCfEv+0JFjDFv-Hƌd<0BFHF <0HF<0ANuprt|`HQ2.|eg>r C<5e&!R<0c <9c0`<R"_`VC0 Ef"_Nuaa/ Cr  g 00VJAgB| nN|mHJ@j0.4DBUBk0QSAg Q.`S@k 0`0BA "_Nu.WAkQA<0g`a%|e=@NuaHjDBaDBNu|e|/d$AрQ4<`,|Nu <r4<NutNuaJBgkpNua~af pNuarafpNu>jDG|e|bFGNu||bFGNu~Nua:6jDC|e|/jC|@j| jr0H@{0>H@Nur{0Nu{0Nua6j(:<DCaf AfBfNuL8`r$o,b4< J@k @[H@NuH@RBNu4<Ѐ[NuDg8k2b4< J@k @[H@DBNuH@RBDBNu4<Ѐ[DBNu4&<ݳB88<:<aH L&<]:Z8<:<a&::gJ_jDBNu <r4<NuJBktNu~2WbTNu??/a"&8:HSJBgJEgJAfJ@f<jDF||dx.HGއQJGfjHGH??UGgkte <r4<` 24HL&8*a& dgHL8a`L8aTJ_ k:NuH 24kBa|L8a~`TJ_LkNuTJ_Lja&8* <r4<`HL aRJBf"L aVLJBjDBaL8aaJ.jDBNu~WbTNuaHS`$~WbTNua`a/aav"Nu~WbTNuaⳀ`~WbTNuaҳF`~WbTNuaF`aNSF`JBjtNuab6jDC|bH&<;)8<\:<aZamHaR/@L&ֵ8<>:H@Ѓd|ڼ`rHCH@:">H@`\2g&HCH@:<HC>H@Ѓd<ڼ`2HCH@:H@r` gDBgkDE`H@Ѓdڼ`HCH@:H@`(vHDdxdLdLdLdLD`(vHDdxdLdLdLdLDуeLJjDBNuN-NLN-xN-`N-DN-"N,N,N"NRN<~N8N9*N9VNNfN2NZN N tN N `NNNTN *oM N#CJEpM4Q=| .`<.@`Oc,NqN-|ub-M̑HPHU-@Bg?<JNAN?<NN-@>NN=@&p-IC"NHx?<HNA@-@ /?<HNA-@Oc3VNXaN~ nJg.CN  gSfaqN|ai Nk`\OcB.{Bna1HN|NˀLa1` N,bN|ap`Nka*nP`aN|N*Bn&A0NLNlNB&apVBn%0pN`k`NEvfY2 Y3 v OK >QBHR$nJjg$_NuH LNuJ.BfNuPBHR$nJjf$_NuHC%I LNu,yOc(M< {` N*L``nT}}}}`}n}"}}2|n}*}}}66zz{xxxyyyzHzHzn{${p{y>y`y$zz0yzzz|2|L"*}|}}}|| }|*KDDD}bZbbvbbbk mdlvmllbZbbvbbbk mdlvmll,`(++++++.^:6"` z|J|J"|Jccclgh$2nX,+$vXvv^vdvÈÂzh":@DdnV\V\X>X843ROG """"}w:wJwZ*d}w ww*0j~www D|}wjwwR~,~t~~X~P~~$^TTmzRhNF8.`hT^+++++22D2X:B"-\`dhlptx||J4l_n_n__XZrHHX $v*r|P$4b\hu^ZV@fxg$ZUUl[]]ʔV&"},"[XXp|^[T"][D[+d[[fAl*rs[D+*J. 88G<G<L0:LRj|J|J|J|J|J|JXXbbbq.P^|^:5AB ^r|JR8"U"+5""""""""""""v e6 ndC p0" V|*A"T Nu~?GG {pN~GG {p &HNp N&j8 2 n n 0 0 j 0 =>,>,>>>==<**:&&&"v~x ~ \ &P &3:34?&9;9<8<<&:&&&&&&&&&&& 94>4B4N&&&& 211K*K4&2::(?F::?~?>?6&&"2n&CD qrrr"rn2 &&?>n@d@V@FZ@Fd׮;""&&"""""""""""&"&&x&&"&&&"""&&"&&&&&&&"""""&"aR`naaDD,ETCCCC+&+$+&+$+&+$+&+$+&+$&&&&&&&,l,n,l,n,l,n,l:,naHbafak mLklaa&&lBl`&&aBba`akmDkla|a&&l:lX&&pBNTNuHz"~GG {pNw \bhntzJ 0&,28&>DjJH (4@|+2+D+V,F,&,,,2CCA AA(36:JBCKTTxTXpB4.]$]D22233UU"JJ&@45$5d h111113.".Xpn(^X0j H48<@Xx06XfnPTHgP"&F*.26p+z+FnFrF55F]X]]]1"a@&Hd| &NuB.&Nua&aր._fajNup e0@ n 0g(@NupN FgaHJLpNuaDBNu~GGA ppN  gNuR~GGA" pp&HNG``R `R Nua> n0(n&HNua, n0(n&HNua n0(HNuaaaaa`<:\fEDCNuaD/a@/aa _ Nua/a* @a _`QBNua4#2NM.|4VxNua"#2NN.|4VxNua#2NA.|4VxNu _r g %g$ - g4  fR`*H@aLRA?`RH@axLTH@/H@`"O`?QNHaV$@a#3H#MN.|4VxLpNuH a2/r -Fg$? 7f Raa `a2RA/ - f"O4`/Q/? Y#3N.|4VxLPNu.z`.|HHNu  g Saa .Nup`p??<NNX @"XLAg.HBbpBAa$L RA@erBf5A Nupa NuaZ8a.B@H@Nuata aԾ|NuaHa^L8ap` .f a"H@B@"d d3 d# d# # d# # # # d ALH dAL H LH d AL`H L|0H>L|H>d~# # # # A`@ALH L|H>L|H>L|PH>L| H>L|H>L|H>L|H>L|`H>L|0H>L|H>QL|Nu$H$&"BA .a@XAf B E$fBBraEr $gdXQNuH>dd2d"d""d""""d LHC dLHLH C@d LHL|H| L|H|PCd~""""C`:LHL|H| L|H|PL|H|L|H|L|H|L|H|L|H|@L|H|pL|H|L|H|CQL|NuA,0<rX0QNuaHU@T2<.,HdY3OjNu2(g"P@g4RA<DAH""nr2gZA<e0 1@#-INu1@NuA,2<XJX[j]`pNa"ndpNH n$n"HgJ k&@ S`g6 k#&@0+Hd3 Hd3 Hd# Hd `# # # # Q&f-ILNua pJ@g:`Da dJ@g.0`6N0g Jf*.paFHG|2 Nu  @apa, Nuapa Nuar>pa 2 Nua`.pa" NuaxANDBjDB|jt|ct|B 1Ap$aňS@kH2Q NupaHdHd `Q Nua|aJjptNualHPa pJk NuCg.BJ@g  g <&g,<$g<%gNNutNuRpt`2Rpt`Rptr<ae< <OgX<Xgn<HgSRB<ae< <Fb$<0k< c_< cb退`tSHka~NuRB0<b఼b瀀`RB0 fрd`a @HP"Xp0gr~ RAfS@n`1V` Nua/a Whd4a($ W PHd2Hd2Hd"Hd `""""Q  _`J Nuaz/aB Whda$ W2( P"IdHdHd `Q  _"X2bP6gHRC<(D#HNua/a?p`a/a?a2fr W4(Ae$RBBc0?aN$2 W PA`p~AWbTNu/a @"_HSHPHQ0(ika $It _a\IUd4Id4Id$Id `$$$$Q _Jf*a,Id4Id4Id$Id `$$$$QNuSaIdIdId`QNup N/a @a$I> _aG` VNu~ _a*4Ae4v` VfANuaD @2(g b P"H`Nu/0Ha2  _ PSAvjx E&Wf* <ae <zb< QNuaB]@k 24|B|JjDBNuptNuaY@k rtg|DBNu|NuaQ@k 24Nual|jtpr|c4<prJj</Bpa" Nua4??/pa"" NupaHPa NuHQ?<,NAT _2X|a:0H|?a :|A0H 0 0H@Nu?<*NAT.p a4 I:Vk2|a.0H|a.`2H|a/0|a/Y¼ҼdaHAa Nua*/a.2 `ar ?a2R@H`2Q Nua bNuag/a"gL @4(gHP²b af$_// Z4HQ`S@Q _Q _ `a?ANBHP?<GNAPAN `p`ap/a/a @"_ `a/a/aLL/HQa< _/ ?a20 _$gS@cY6 :fRS@g.t;ak&AA :fRS@g t;akIA??<-NAXNu !gaSV0ga %FgkZtak$6g~ .fS@gt atkAg A .fS@f.`\t a\kVAgR6 /fJS@gFtaFk@JAgaaH| cr `aޔN.`FaކHa.LHP?.=hN.=_2 "@$Y4Ad2`0QNu$HBJ gDBv ҁрQHANuHABAJBjDB|e <rNu|e <rNu HBv QHBNur$|Bg|DBNu|NuJBj"DB|k|e( <Nu <NupNu|k|e <NuBЀNuLp&H` a^HN&gF(b:b4LHarL"n@$Ir `Q"JOjr0XDQD@CtEe PA`fRشf`e"J*c j|0"cRLJgR $I: Xf)<5e,0!9Ojg<-g< g<9f 0b`RB`1`aR`aS`p`a/a:/a4 @"_ `a(/a"/aL/HQa _/ ?a0 _$gS@cFHc$Jg,J@gF@Bo2S@,. S6Vg(S F"GQpNufJ@fS`fS@kVftD@HЂTNu? P`INu*_T._fNlBg=n&HUa>.&<jRGgVGg:TGjpNJogapANaB`aANaJJk -Ff\Nu fRp"Ma` !g pChaPaANJoga -Ff\NuaJkHR -FgJg`aANJoga -Ff\NuaJkR -FgJg`a -Ff\NuHnNHx?.&?<?NAO Jk,g2AN  Nu?<?.&/?<BNAO Jk,NupR@0< gF< f`.~SgYf "gBpR@0<,g"< g< fa~ (fR~Nua ~ `a~NuHpa _NupR@0< gڲ< gIJ<"fR@0<,g"< g< fa~ (fR~Nua ~ `a~NuHpRU@a _NupR@0<,g"< g< fa~ (fR~Nua ~ `a~NuaJkHQ ! gRfa _NuXX~Nu<.&\FHSGNa0AMg< f< &_NuHPa"2  _`Q` l??<NMXJk+8Nu<.&\FHSGNa<"fAOg ."Ng&<,g< gAMf< &_Nua< g`Ra<,g< ga<,gְ< f`HSHx??<?NAO Jk*SfNupNv`v??a?@aЌNMXNuDW?<NMXNua?k?<NM"|f J@fH@<Nua 0o GN<`~0fpNu\@`a^/p`aT/Ra 0<R@f| bVaJFk(HPH/HQ/??<?NAO Jk)갟f< tNuHSHP&I>g \SG??<NMXJk)._V t&_Nu nP hg hfBNu-H=|Nu<Fgv<e6C n 00g @~`p!Np"Np#N .g @aJkfRH=H -FfNu nav`4.A'f nLR@RANu4.g S@SAH&Nutbpbr??paRpYaL0aF0`@Bn`pBn`p=| |=F|=@aH=A~`:aJfBH@<RfF.ϰ<Kg"<Mg <sg<tg<Pg<Hf~`nSGjjRGFcd>``AN< gh< gb<g<gnenfJ.j6pRGFc$SG` J.jpRGFcRF` Ff8RFpRGa`PNl`F `?~ap a6p a00NuCpE`bf`FgRGJGg SGSFFgCpE`Yf`Nua@Jf gH@<fa(@<fza<0< b @|e0NuN0._fJgNup Nu4.f?HyaNM\Nu=|&`LazEfpa`ppa\ANEg0PaEfaBRE`ܾEfp a:9g@<+gN<-gR<$f<,fHQ!aRn&"_p$RHQa"_`Rn&`)< g<*fp `Jn&jp-`Jn&kp `=_&Sn&Rn&`HL&=B&jDBNLx"nE0RJCfRCR@r2HAARACd `<Efr0Sb<Eg2<5e,!e<0R<9e0`R1R@0c JEr+J@jr-D@UEoJ|c0`HYEf<0SEH@HdREf<0SEH@H 0 0REfH@"n n& X&Rn&0n&cJ:g<_g :g<+g<-g HQaL`Rn&`Jn&jp-`Jn&kp `=_&Sn&Rn&`a*o&??Hn?<,NA=@>*NA=@>WNAO NuaHrddA HNuao?<?B?<BNAO Jk`a( tn&n&Hab @a&0|xepw2At4/jDoHB t`0QLp~HTAtp =| `?lpNpN?<OA `0?<IA `&pI`po?Hn ><`a<|?Ra`fHPaEhr$ļWgrCOM:g rLPT:fFA0 _=@&TNuApHPB2/ <Og*<Rg~<Ag><Ug0<Ig<ogf`Bp=`pNAXJ@ktgBA p`$Nupc?a0QNuA . B. H|m ??<>NAXk. B. H|m??<>NAXjNNupA` p9`p:`p;?a:0>AHPBHQ?NA\ _Jk"Nuan/a:$$IAHPB Ba9AHPBHRHQBg?<VNAO _`*.*p`p3[r Fga9SANJAg"0<@e2`QB :g \f RCf?9[HnN?<N 0NNuCNEAJy[g *g|*fSJy[g: A]f *aHJfP|00* Ia 0*a\"H  N CNaPa`N'/Qa H@HaHda H aNqJfJg<0P< H@HNua8Jp`axS@k ??<NAXNuad?HnN?<6NAP0.X\PNua8 paJkpNupNuaZ/a* _a7AHPB?HQ?<NNAP _NupO`p/?NATNua/?<NA\Nua/a @a _/ ?aAN-H%`QB2"_A-H%| e ` \gQBapZa9aAN"H0.%Zg "Hg<\f`AfS !.gR AN`ax : -Fga>. Hk"=F&//<??<?aNAO Jk`$a,a#^6aa"z. H=A&ah`$p6Np4Np2NaFp(dg@A /"X20X` X4jDBB]An?aᜰ_b -zglv e6C n` p8a"W?HPpia P$o&R$t4*vB5C(D'(#8J`2Q"2 FfpXNu?a& @0D@`a~ S>/./?.&?<?NAP _f4"[6\`$Y4jDB`Q]CnNu&ZRf`Q]CnNuepNep%NaN~"[6>X nHP/?.&?<@`"$Y4j DB`Q`&ZRf`Q]CnNAO fNuaAdgHAA HP -Ff P (`a>&_ S2 Sb`v6aBg?.&/?<BNAO Jj |fp7NNuHa n"n`Ha"n n <}aLNup=alkHQ??<>NAX"WANfSp g<\g <.WgJfS.BAKBHnN?<ANAT//Bg?<VNAO "_`8BgHQ?NA"oPJ@Nu6`v n\CC p0 24Nu6`v ndCC p0 ` d6`v n|CC p00H` F6`v nCC p0p` (6`v nhCC p0Jg <r4<NuprtNu6`v ndCC p0 Nu6`v n|CC p00HNu6`v nCC p0pNu6`v nhCC p0JVHHNu6 n\CC/00aJ _ 00Nu6 ndCC/00a _ Nu6 n|CC/00a _0Nu6 nCC/00a _Nu6 nhCC/00a _JBVNu6`v n`CC 08NuHp8`6CC n`/00a _g c/"@0)a _$PS@kH2QNu2(g"PRA|4DBH#"@$Y2Pg 1AHRA|%NuBhNuRanJkxg8|AfAD v\ p@"F`6vg6CTxg8Dr@A"v\ q0"q@  "002Nuvg6r@A2;N0 zr0" nlaHp` n\C/00Rv<e6g nla` C n\ p0"_  "  "Nu ntaHp` ndC/00Rv<e6g nta` C nd p0"_  "Nu nadЀHp` n|C/00Rv<e6g na2Ѐ` C n| p0"_002Nu naHp` nC/00Rv<e6g na` C n p0"_Nu nxa?Hp` nhC p0JgBgHPRv<e6g nxa"`C nh p0Jgp"_2g fQPNufNu npaDЀЀHp` n`C/00Rv<e6g npaЀЀ` C n` p0"_ r2$v60!2#RA|g$@%RC|g$B%8NuatRHPa.$_ Z0AcA`QS@ QNuHd0Hd0Hd` QNuac4ASB Q`QNuaRHPa.p$_ Z0ANuvg6g npa2ЀЀSNuC n` p8NuaHP !gRaP?g<0< -!fa??/a&8:BmnJBj efAc` bfAd 24 - fNua - g>??/a~&8:BnmJBj bfAd` efAc 24 - fNup`pra8 - fNu/a(L @"C2(8) P"Q:De:|`VfAbCJ9rgC @/aɲ `-<Xk`Nup<e0@|A/?;8a\2&N,p<e0@|A/?;a22&N R8L`~ nlaLHPaP _ 00Nu~ nta4HPa _ Nu~ na HPa _0Nu~ na HPa _Nu p8"X PfH(dHqr҄AĒ a _Nu" e" dh` QjNupN nl~a*BBNu nt~aBNu n~aB`Nu n~aB Nu p8"X Pf(dlrҀHqHA a _Nu" e" d6`QjNu np p8"X Pff(d.ЀЇЀHq.؄؇؄AHĘ aHPa"_ WBhal`.$Pt4(gRB|&D%(Nu np p8"X Pf(d.ЀЇЀ.؄؇؄HqHAIaI HQax _"_BBa]tv`$P4(gRBC%(\cNua*@z -@-@v n"nEK` k&@p0+R@Db bP| nP$n hg0fQ|-H.z".fapANaP}Jyf zvPb`=@%0-H%p4`!][Return]a-CNua -C|^Nuv e6C"n"q0& g )Ff& Nuv"CNuBNuQ^NuP^NuOcBaL\*L`|e*RCFCĴ|dЄeNu|/dHDDdRdQRBNu&<:<`gSC|bSCĴ|cjNu|cHDDdSkg RBAрjNu0ftNu| H@"jNu0@ nd/0a W p aHRa$_%Nu0@ nd/0a W pajHRax$W%@an$_%Nu"n] Q !k:Аi" n (]Nup"n] QАi n(]NuY -INup"n] QА i氡m(]Nu _$ne aεd-J]D@5%NpN0@ n|/0a W0paHRa$_5Nu0@ n|/0a W0p aHRa$W5@a$_5Nu"n] Q0!k:Pi"0an (]Nup"n] QPi 0an(]NuUI0-INup"n] QP0iam(]Nu0@ n/0a WpaHRa$_5Nu0@ n/0a WpaHRa$W@a$_Nu"n] Q!k<e$!b"(]Nup"n] Qe ab (]NuSS-INup"n] Qd!e(]Nup0@ n\/0a W 00pafHRa$_55%Nu"n] Q 24a11!:!8!&!JBkJEkEffDb(]Nu-INuJEjEf춀fA`"n] Q 24a11!:!8!&!JEkJBkBffAb(]Nu-INuJBjBf찃fD`p0@ n\/0a W 00paHRaHaL855%55%Nu"n] Q 24:!8!&!aJij`d/aJBg(_NuXNu/a~JBg"nY-I(_Nu/apSAkSAk0SAk SAj `/a _ Xf"HXjaF Gg$f IY(HNu Q`ز<Fgea"n`Rj&am°n`Sm`IJ<d dR$NutgB<kg$n$r tNu$n|$r 4HNu$nd$r $Nup4*]]fY(MNu lg lg l<fNu 9g *@B`Rp)N/aPJBf(_Nu/aBJBgXNu/a4JBgXNu/a&JBfXNu*@(MT/a JBf k(@Nu(]Nu0@ n\ p 24ap`0@ n\ p 24aP11!Nu0@ n\/0aDB`0@ n\/0a _&8:a|11!Nu0@ n\/0az _&8:N611!Nu0@ n\/0aV _&8:a11!Nu0@ nd/0a _&ap Nu0@ n|/0a _0Nu0@ n/0a _rNu0@ nd/0a _&aR Nu0@ n|/0a _2HJ@g0Nu0@ n/0aR _rJ@gtNuah/ab&C"g\kdHöfiHNufnpNupNu&lDaDNuJnDaDNuzxeփ؄d`ef NupNa/a& "gTkdHöfiH@HNugmNupNuz&lDaDNuJlDxeփ؄d`efNupNaNhHNuaFhHNua>xHNua6xHNua.(Nua"(Nua8Nua 8NuaNAXNuBPNu&|.GFAa(gaBBAp BQaCNp ap AOCeZVfRCN <aP,ACEN "Ҁ f Cdb"n .an`6p `p `p ?a `p`p?a0NNua `:aNk^` .g p(Na0gANS@|e0<QBHTa(_NuNu <.GFAAMBJfS"H .gJg :g \frQB ICNNuNua/a/a/aT o8"_ _" $IdLb&d d `    QjNudd `QjNub<`aЀa /a"_`ala/a"_<.&HS?HQ/a.&_<k/HS/??<?NA Jk0&_fDNu\Fj.?r Fe aRJf 3PREfU  fS C>HQat$_R@Hd2Hd"Hd `""""Q\NuH@a L,zNu<.&kHSHx??<?NA JkNupNpAa(Q{aa`a&fa`Hz#-L-Lv|}NupA9aS@Nu3V_g J.BgaD_Vga_ga4_g".a|_g".anJg_3Nq*L`4J.^fag`_Nuk. .^f&R.^".J/g B/a8S.^nR.^NuB B ANC&fJ/g B/`7"L igF ig>HN˰Lp".f=n&& CNa0yfgpQNu~`aHg"=G&B_3NqNua-Cf_3VNuAbBBBBBBB._3V`NuAC g#P NuAC f Nu?/Ne4T`N˰pNuNeC!H,yAp<f J.^k3Nq_ n!|v |eC!|.`"XLv:g 4zg8Ag61 <cg<Jg<;e,<]b&<Te<`<Db<; g f <g< bJg fg fg,HC#0z ` Hx Dg;0\YBj@1BAf gbШ 3Nq_An gdBB3Nq_L@Nu wHHKMPPR g*g$n``bByXB@etAg1B# `NHCHS&yvg1B# XB@etAf&_` Bn_Nu-nrnNuBf_Nu-njfNua-CHnNua -CHbNua2/ap"Ҁ$afprtNuaX@`Nua"NN @A CD#P B?< NA\#/aZa?< NA\Nu?<"NN @!y THz?<&NN\Nu#+Nu?<"NNT&@/&B+paJ+gar&ALHCdpJg XXQA# ~P޸|a&:|a RGk0Gg`a0GVf3<??< NMXNu "LH!`Hx`(Hx`"Hx`Hx`Hx`Hx` Hx`Hx !4VxH A3 Ni LH,yOc|1R/9?< NA,yOcpdzNH,yNLxNp"A ӘQNu%%& &H!"%0%X%%#$ <Nu :Nu :Nu :Nu :Nu :Nu :Nu :Nu :Nu :Nu :NuA&r NuN @NJAfCNuNS@jp` tb~@tbtA@A&r0HNuaHPN _0Nu .ЮNu .Nu .мNu?<'Hx9`?<Hx `?<Hx`?<"HxNְd @_06HNupGN?b `BgpJyjgpANuS@f*N|Na!|aHz?< NA\N?<LNATNufC2A@p222N"<0<NB0.%XNurt=@=A=BN^"<psNB0.#NuN=C`N=B=A`N=@N^"<psNBNuNC2| e|bA@p222N"<0<NBp0.%Nu  0.HNupNup`>po`8pa - fNu?NH%0`pd` pe`pa`?NH%0`p?N-@& f-|& 0`N&<x:<N6NHJjNuNH@-@%p`NHNHG-F& f-|& -G%H?%LH%pav - gL~%/H> a( a" `*Nupj`p?NH%0`6p4`p#?N?a=_%`.NHaL=A%H& p"`pQ`p `pn?a-I& 0AHPBa _NuNH%ppa"g".&H - g / az Nup`pr?N=@%-A& 0`pq` p `p `p?NH%-B& 0`lp2`p?N-@& =A%0`Rp-` p!`p `p?N-@& H%0`.p(`p)`p*?N-@& H~%0`p+?N-@& H%0`N-@& H%p8`N-@& H%p.aL%` N/NH%-_& p/`p3?N?NH%=_%0`pk` pf`pg`p5?N=@%0`pNH?%pl` NH%ph`pM`pO` N-@& p6a>L% - g /H8 a a a a NupPAN-H& a/ .& aa NuN-@& =A%p,`N-@& H%p7` NH%pFaL% - g// ap aj NuNH%pG`pH?NH?%0`xpI?NH%0`dpJ`NH& pH%pK`HpL?N-@& H%0`0N=@%-A& pN`NH?%pi`NHN/a _H@@N<~JAfCLH& LH%EHRBEHRBpya _ _NuN?N @0Ha-I& =@%pz`N?ar-I& =_%p{`vHUNaZANH& AHPBp}aR _ M*_HP .Na 0.%H*_NuN @HP"X2AN-H& |erQBp|a `N/N/px`BN/N W"X2/ @$X4AN|derdQBAN|detdQBpZAN-H& AN-H&$aANJfN  _a AN`QANJfN  _aAN`QL%`p`"p`p`p`p`p `p` p`p`p?a0_00HNua @ ( NuNЁNup`"p`p`p`p`p `p` p`p`p?NЁ0_1NuN @! Nu?<"NNT @#!|Nu?<"NNT @!z4Nu# H,y nJhg_3NqLANeC!p`pd?N? - g4NHNH!-_!=_!0?.r ta0.=_HNuA"0p 1<Q`p`perta0.=@=@`p`prta0."HNupw`px?N=@!0`N?N=_!/rt0<axA"Bh@pR@JXf _aA"`4QL"Nua^pA!tBe26`0QBXtpta$L" - g/LHHyYHp`NuNHNL Ԁn ؆n$ցn"ڇn&oJoz`zHt`<>Hz ?<&NN\Nu nLLJFj|@c<JGj~Ac>02 h|N nHHNuNa -FgN|@Hz ?<&NN\Nu| |"<B(B(`N^Na n"h $h224NuNa n"h 22HNuNa n1F$1E"H&aZ1| NuNa n1F2!E.1D$a6H&Bh4NuNav n1G2!F.1E$aH&Bh4Nu81DL1DL1DL1DNuNa4 n1G2!F.1E$><"h3A!@ a n1F(RFFdNuNa| n1Eh1DZ1BN1ALb "nC&10$CBh$1|jBhr!jLT1jPXj$"jH@1qHBhJ61hH1CP1jRRBhf1|B1|D1j>\1j@^1j:`&*6HC([fv!Cb1|F1|@C$!Il1|@pNuN nH6NuNHaHa&I>`Lxzpa n hP.SGjO NuNn&NuNn&NuNn&n&Nup=Crt`A pBXQpadB&papava=|BnprtahBplrtaZpapparpatpapa pa"Bp'rta( nCB2SY2SY=|0<rtapa.papar`0 !g" %FgFN&jD@ava -Fg* !g& %FgN=@Bnprta -FfNup !g %FgN?p -Fg FgN=_=@plrt`\ !gSahN AI0`0Qppta6p`TNvh`^Nv`VNvj`NNv `FNv`>Nvq`6Nv`.Nv `&Nv`Nv`Nv`Nv`NvC=Crt`papap? !g %FgN6a %FgRTNupapa FfNuN=@prt`pN$&`Nn&n&n&n&HH prt`<6AC1=@01=@WCk1Qrp`Nn&n&n&n&A0000000000prt`Nn&n&HB=BBnp rt=|`Nn&n&HBB=BBnHp rt=|`tNn&n&Hp rt=|`RNn&n&HH0p rt=|`*r`r `r?Nn&n&n&n&Hp tr=_`Nv8<`Nn&n&HHBB=BBnp rt=|`Nx:<`Nn&n&H0Hp rt=|`~By GfR?.?.Rya?a?Ry -Ff yg T4:`Nq?/t`N`Ntn&n&=BHpgrt`paFpja@p a: !g %Fg$N-@rtp a -Fg Fgap&a=n#&=n$&=n$&NuNBg?N/N?@N @N, > _N4$FAN0||[000][vx`*<[g"<]g<|g QSx` xQSrQ][vx`*<[g"<]g<|g QSx` xQStQ]BAN0aHNh0aHpirtap0.#NuN|???<NN\NuN~GGGABBC`pNp`p`p ?N.fTNuba??.&/Ra??.&/ Fg/NoNo.C _<0aC _<0a 4r0`zڇ|gk0F2TQNu F2TQNu 24NHF2TQNuv<e6Cr@AA\ p p8 hf X eRNupNpNN|=@%0pN`LN AI0`0QtpoajNzNrtFSggRRfNu$n\e N$d-JaFBb% Jg(CNup\B.{Np!`-np]`aJ.|f .Zzg .[zgB.z(n Ff(nNup`pv e6C֮ C/g?a nc*2 ng|f` `JfY-H`Jf a`flJfN8(_B.zNu&n .nN$ .bpZNvC2;0N-K FfNuX:4444x444444T64444tN6C nd B& &6Nu6C n` BB[& &6 Nu6C n| B[& &6Nu6C n B[& &6Nu6C nh B[& &6Nu6C n\ BB& &6 NupZNg _3Nq-K*@XN.z-KAcf J.|gN fXNu&n0#f #o-K(@Nu|gG`T-KNuk c | gT0f #ox-K(@NuPp0 cgR@|"D!`aHp N _ NuaRNut<e4A\|A pB 0 gRNuaRNuv<e6A\|A pfC 00<f @ Nu?Nk<2|eg QAeg|gЀЈNuЀЈNuЈNuЀЀ 0Nu$n\e N$d-JBb% 0@ n 0g @ (Ff FfZ(HNupN FgD @0Hp\a(_Nuj-< g$|@4; N <2g~S  f#~Nu:4444X8>>44>>64444T4N0Jk"n\@HqHPN _??/  fSad&npЮbN$pЮe( && _& &6 -KNupN0JkZ"nd@HqHPN _/  fSa&npЮbN$pЮe( & _& &6-KNup*Np-Np.Np/Np+Np,N0Jk"nh@HqHPN0VH`<0Jk"n@HqHPN,`X`0Jk"n|@HqHPN,v _?  fSaJ&npЮbN$pЮe( 6 _& &6-KNu0JjH"n`@HqHPN _/  fSa&npЮbN$pЮe( $_e6Bk K0*N$RHd2Hd2Hd"He`""""Q`"Z&p0P7@g R@|#\ _& &6 -KNuS  g$j|@2;,N(U  fr#~NuS ( fZ#~Nu|@pL ".dX:x<lH*`T60"n`r`:0"nhr`.0"nr `"0"n|r`0"ndr` 0"n\rtg gpDN4B@Hq/1 Ra&npЮbN$pЮe&"_ _& &6-KNu0"nr tg f4RR`0"nlr`0"npr`0"ntr`0"nxr`0"nr `pg0@ d n` n 0g @HP$n\e N$dl-JBbB _"H Xf\ eRR #g( #g gHU*HNHaL*_Nu #g -fpHQa8"_R y~R`]/.?.&H (IEc \e N$d"n-J5<%Hd2Hd"Hd `""""Q eRR #g* #g g n0 "`k`!MN #g -fHQa|"_R`pENNHaL$nUJ&"Kd?"Kd/"Kd `/"/"/"/"Q-JL0=_&-_Nup-@&r-@&~-@&-@&=|&p-@%0pha.L%ZH&JKBCH&A)p0 1PP1P1PA&vL?&<@>AFGH 0000X0000X0000G&r~A%00g0  pia QNu MWfRNJf ?S@k8L&fBfC`2Sk|t A&v & &`pTNuNS@k*|> A&r1EH`\Ha-_&TNuBn%0`N -Fg&?NJWg԰n&bn&cTNuH&a0S@k|> A&rP޼)pގ"G0(<JgRJ)@g1@C%02fP2HP"&"&pda߄ W0.%X1@A%000 piah=|%2@%4piaT _C%2""pe`.=|%2=X%4HPpia4 _C%22""pia =| %2pia=|%2phaL%ZH&P&P&H&SBSC@AHH&p=A0<rt`NS@k| A&r=p%0fNupa&pa"papaL&ra`j4&_NuBn&`a6`Rn&<&SFEn&eSn&`NuNS@kN| A&rC%00g8?a(=_%0p =@%2phaJL%Z6Fgap `p`p=@%0pk`&NuNB&S@k| A&rC%0=P%0a=| %2phaL%Z`4p-@&"<$&HA-H-HBnpmrt`Hz ?<&NN\Nu nMNJFo`JGo\H 8N-@-@ p-@*-@-@ H0H00(L=B=B&=CC=C=C$tBft=B=B(NuNS@ A&r00HNuNA&rPgh ghgh$g0<NupNupNupNupNuN^Hz ?<&NN\NuL& nMN(8N-D-D x-D*-D| J@jpJAjrRBhe4(RChe6(@otAop=@=@NN`pH@*A%00.0CL000H?-|%paՄL%XH%H,v3LHd"aVHd"aNHd"aFHd"a>Hd^ y g"`,2:|WAARA0:tAc hfRAS@f3"g"$n\e N$d-JBb% (ANuN@k0;HNuX@gAc Nu <NuNz`NzAC|HdXC|2H0`&NHpA`Ap` A`Ap4.Nv( g=BNu((?<NNT. n0(LJvA HA HNuNAHN/p -FgNְ|d _&X PdXNu6:8N^?<NNTHV nMN-@ @6H H00(L=C=B&<RF<>RG=G[fx-KC=C=C$tBft=B=B(tFJ=BBBB*Dk>Ek:@l6Al2DDk =DVBnDEk =EnBn@cVk Acnk,_Nu=@a _N]Ak024E$|b5B5A6||5CK5C:8AB0000DkxEkt00A<:L>:JSFSGFn\GnXDDk0BhDEk1EBh Fchh Gchh0hb"0hbpmrt-|æ-|ú`2NuNCBHN&@N^?<NNT-@`LDbFEbGBj=E\=D^-|XBTBx n0(L=CR?=BfC=Cd=Cr@dnAdjED??RGRF=GN=FPtGJ=BttBft=Bh=Bv|OpЇЇb KN222-InHVMN,_Nup NT KpNN @ <}N&IaN7N @&XaI`N^?<NNT @"K <}Nu @HPN^ _"X0|Jg2zf.HPEJH LppJ$_44&b'JJ|NHD'BNNupNup e0@ nt pT"X PfXLNupNp e0@ nt p"X PfXHVMN$N 4 4 4 4 4$ 4 4$ 4 4 4 4 4$ 4 4 4$ 4 4 4L?H?,_NuNHV,@,_Nu   FgBSN|gS@ H{ -FgXN W@ -FgF Mg4N W -FgN W HAA20i0d R@`RN W?< NN\ -FgN*Nu0^ M / haw FgxSNFA -Fg`NA ff f -FgN# -Fg NAAHP p0p t0t x0x`p<e0@ @|A2;N !gNu T,J^^^^6@^^^^^^\ PBBNud PBNu| PBXNu PBNuh PBNu` P"X0gBPR|"D#NuHyNMXJg HyNMXJNuHp&HN^ga`NzLNup|?HyNM\NuA0aNJPfN`NkNNuHGFA-BASIC 3.0 RUN ONLY "h P`BfNuAaAaAaAa nPBBgKp0(H|e|b|dd``R2;N"($HjBBfff000Ht6pHP?`h0|f"_0#Hѩ`|gHzP`"_!I`80|g |g|f"_0#Hѩ`Jg|bg6|dg0J@gHzC`L0|f"_0#Hѩ`|gHz`("_!I0E#J`0|g |g|f"_0#Hѩ`ް|,gB|.g<|0g6`L0|g |g|f"_0#Hѩ`ް|&g |(g|*f|@1@"W2(igHz`0|g |g|f"_0#Hѩ`ް|2g |4g|6g`0|g |g|f"_0#Hѩ`ް|8g |:g|g0Q@kg$Q@kHz`.Hzb`(Hz^`"HzH`Hzd`Hz`Hz` Hz`Hz _O~Nu _f"_#HT/?<` Hz `j _f"_#HT`Hz`NHz`Fp fHP?2(A"nJf#p` _ fX`Hz`r( (eA(A"nJgHz`"0ёJWg`~ W gv W"gn W$gfgHz`Hz`(t(gB( e"n`"nBJ fP# `f<(t(gB( e"nv"`"nv$BJ f# HP?`Hz `(Hz ` 2|"g|$g Hy:`\`"OYgJf`"O Y gXeHz~` nPp2(|g|gT|g²|g`~O n"n`VeNuvC e6C"n&10xȃDNuag"CgHPbI~|L|gD|g>|g>|(g0|,g0|Le ||e |c$e _gfBHz r`RR`SS`Sj`afgBD|1D~"CL|g:|g4|g.|g(|g"|(g|,g&|Le ||e"|c `JgBHz `Hz D`R`Sj`p`(NJBj[BNHZBNHa"< @Ё`a"<-JjЁk`ddReaDBNu$⊰e v@Cr4<(;& ;`ЄQJftNuSBЀjNu;ew2Ƕ '\ a0Mj&l g:~lm٬26K! #H%lo'n)7+P-?/2zE4B6Z8:\V<>=@AĄCdE^GIjK<MFQNPRFISU[WKXZy\S]_^`Rb cyd݉Pf9:gnhdj7kYl mznoqm>r us ttuavw&IUGj -FfNuSGkpg< g<gt<Pf<Ug <DfQ\`P\`<Cf <Ofa2NH=@prtN `<TffaH8`<Lf<TfaDBL88/N*.`ְ<Rf <Tfa`ް<Ff<DfaHa`HL8a(/a@L8a,&.Dg L0HaL8 aH <Пa L8a&.Pg L0TaL8,aH,aHJ.\fprtN `<Bf<KfaDB`L<Mg<DfZ<Ag<Rf԰<MV<AVaHaJgL8 afH aJgL8,aPH,Jg`b<Sf<Xg<YfaJBfpHP`bazJBftHD`/N6.Nu/N*.NuL,an&?L an&2NuJBkRBNHdRNuSB`tNu -Fg 7f RN~NuN &I>SGk< g<,g<;gSRG K /N:.JkȞHNuNrd A LNu.\f <r4<NutNuNH NH,NH8NuA#3xshNu,.܆އ:sh7xh7xNu,.܆އ:sh7xh7x܆އ*rh%xh%xNu3X3HNu,.*rh%xh%x3HXHXNu,.܆އ܄ޅ܆އ(sh*sx<3h>3x?Fc>HHnHSGk Vf>FNuTNuHANpr,.܆އ܄ޅ܆އ(sh*sx<3h>3x?Fd>HHnHSGk00Vf >FLNuTLNu,.܆އ܄ޅ܆އ*sh'xh'x:sh7xh7xNu,.*sh'xh'x*sh'xh'xNu,.*rh%xh%x܆އ*sh'xh'x*sh'xh'xNu,.*rh%xh%x܄ޅ܄ޅ*sh'xh'x:sh7xh7xNuv" [0gt@C!(Q꒼jNuH <3Ho">3XoDFf,3XHf<3XsHL0Nug">3Xl Ff,3HXf<3HsXL0Nu>3X||F`Case ohne SelectSelect ohne endselectMll - Editor FehlerWhile ohne WendRepeat ohne UntilDo ohne LoopFor ohne nextWend ohne WhileUntil ohne RepeatLoop ohne DoNext ohne ForIf ohne EndifEndif ohne IfElse ohne IfElse ohne EndifExit ohne SchleifeProcedure ohne ReturnProcedure in SchleifeProcedure doppelt definiertFunction ohne EndfuncFunction in SchleifeFunction doppelt definiertReturn ohne ProcedureMarke doppelt definiertLocal nur in ProcedureLocal nicht in SchleifeFunction doppelt definiertGoto in/aus For-Next oder ProcedureResume in For-Next-SchleifeResume ohne ProcedureKein Resume in FunctionEndfunc ohne FunctionNeue VariableNeue ProcedureNeue FunctionNeues Label[2][Besttigung bei neuen|Variablennamen?][Ja|Nein] Neue Namen [2][Inline lschen ?][Ok|Error]Division durch NullberlaufZahl nicht Integer|-2147483648 .. 2147483647Zahl nicht Byte|0 .. 255Zahl nicht Wort|-32768 .. 32767Quadratwurzel nur fr|positive ZahlenLogarithmen nur fr|Zahlen grer NullUnbekannter Fehler Speicher voll Funktion oder Befehl|noch nicht mglich String zu lang|max. 32767 Zeichen Kein GFA-BASIC-3.00-Programm Programm zu lang|Speicher voll|NEW Kein GFA-BASIC-Programm|EOF - NEWFeld zweimal dimensioniertFeld nicht dimensioniertFeldindex zu groDim zu groFalsche Anzahl IndizesProcedure nicht gefundenLabel nicht gefundenBei Open nur erlaubt:|"I"nput "O"utput "R"andom|"A"ppend "U"pdateFile schon geffnetFile # falschFile nicht geffnetFalsche Eingabe, keine ZahlFileende erreicht|EOFZu viele Punkte fr|Polyline/Polyfill|maximal 128Feld mu eindimensional seinAnzahl Punkte grer als FeldMerge - Kein ASCII-FileMerge - Zeile zu lang - Abbruch ==> Syntax nicht korrekt|Programmabbruch!Marke nicht definiert"Zu wenig Data#Data nicht numerisch%Diskette voll&Befehl im Direktmodus|nicht mglich'Programmfehler|Kein Gosub mglich(Clear nicht mglich in|For-Next-Schleifen oder|Proceduren)Cont nicht mglich*Zu wenig Parameter+Ausdruck zu komplex,Funktion nicht definiert-Zu viele Parameter.Parameter falsch|keine Zahl/Parameter falsch|kein String0Open "R" - Satzlnge falsch1Zu viele "R"-Files (max. 31)2Kein "R"-File4Fields grer als Satzlnge6GET/PUT Field-String|Lnge falsch7GET/PUT Satznummer falschMenu falsch?Reserve falsch@Pointer falschAFeldgre < 256BKein VAR-ArrayCASIN/ACOS falschDFalsche VAR-TypeEENDFUNC ohne RETURNGIndex zu groZFehler bei Local[Fehler bei For\Resume (next) nicht mglich |Fatal, For oder Local]Stapel-FehlerdGFA-BASIC Version 3.02 D| Copyright 1986-1988|GFA Systemtechnik GmbHf2 Bomben - Bus Error|Peek/Poke falsch?g3 Bomben - Adress error|Ungerade Wort-Adresse!|Dpoke/Dpeek, Lpoke/Lpeek?h4 Bomben - Illegal Instruction|ungltiger Maschinenbefehli5 Bomben - Divide by Zero|68000 Division durch Nullj6 Bomben - CHK-Exeption|68000 CHK-Befehlk7 Bomben - TRAPV-Exeption|68000 TRAPV-Befehll8 Bomben - Privilege Violation|68000 Privilegverletzungm9 Bomben - Trace Exeption|68000 Trace ohne MonitorAllgemeiner FehlerDrive not Ready|ZeitberschreitungUnbekannter BefehlCRC Fehler|Disk-Prfsumme falschBad Request|Ungltiger BefehlSeek Error|Spur nicht gefundenUnknown Media|Boot-Sector falschSektor nicht gefundenKein PapierSchreibfehlerLesefehlerAllgemeiner Fehler 12Diskette schreibgeschtztDiskette wurde gewechseltUnbekanntes GertBad Sektor (Verify)Andere Diskette einlegenUngltige FunktionsnummerDatei nicht gefundenPfadname nicht gefundenZu viele Dateien offenZugriff nicht mglichUngltiges HandleSpeicher vollUngltige SpeicherblockadresseUngltige LaufwerksbezeichnungKeine weiteren DateienGEMDOS-Bereichsfehler|Seek falsch?Interner GEMDOS-FehlerKein BinrprogrammSpeicherblockfehler[1][Wollen Sie den Interpreter|wirklich verlassen?][Ja|Nein][1][Programmende][Return][2][Programmstop?][Stop|Cont][2][Druckerlisting?][Ja|Nein][2][NEW - Programm Lschen?][Ja|Nein] Syntax Fehler Zeile zu langAsOkH 6&* & "$ rR  0tb8,8&Z`FV &tH  < $,~l(X"6@( ^$0N,D 4d xN ,  2"0:PF @xhvN T &20J X0& NjHGFA-BASIC3Fp LLLRX!"2"6"##v########$$$$$"&&ITERP1WPXYXMIXMAYMIYMANXNYXSYSXOYODUMMYBICIEIDIFIWIAIMAXFARBKXLXRYUXMYMKMIMOUSEK2MXMYMKENDIFPHISTADBFILE TTRACE_TR TTRACE_SCREENSUCHBAPATHINSIAUFLMAXFARBMAXXMAXYMAXTRANSTIJAIART TTRACE_TP2 TTRACE_TPBFARBYMAXREDGREENBLUERAX0Y0CHARHCHARWCOLDUMMYCHEIGHTTTRACE_IN_NAME TTRACE_TR_GOABORTCHANGEABCDEFPWAHRRENDOMPTESTRUONDPHIST TTRACE_TRBP TTRACE_DUMP TTRACE_TP TTRACE_TR TTRACE_TRC TTRACE_CC TTRACE_CL TTRACE_RCTTRACE_IT TTRACE_MAXINTROERFARBBRFARBTRACE TRACPROOFMANIPINITFARBEINHINRUECKFUINSTRIP.Bei Fehler und Break Farben normalisieren FFl (Unter welcher Auflsung laufen wir? 0|V FF8F8@FF8FF8F8F!!!F!!!FdF8F8F8F8F8FF8F8F8F8F8F4F ,8Fe Maximal 20 Transformationen .H ! ! ! ! ! ! FH  !  !  FHHd F Array zur indirekten Adressierung der Transformationen  "4BW  :\F\ FFN!.IFS Generator| | 1988 mhmb|Michael Harwerth!!Aha.!Fet!SLiteraturhinweis:|Peitgen, Heinz-Otto|The Science of Fractal Images|Springer Verlag!!Ach so.!FH!%Letzter Tip:| |Mausklick hilft immer!!!Is klar.!F.F<FN************************************************************************* V8V F 2 bis 4 affine Abbildungen *** nN*** t% erhhen bringt kompliziertere Bilder hervor. *** N************************************************************************* B0PF 100000 Iterationen (Nur fr altes SAVE ntig)  0F*XGF generiere Koeffizienten L*********************************************************************** \H 9ߴV F* Drehwinkel; hier Vielfache von 45 Grad *** L*** je zuflliger phi, desto unregelmiger die Bilder *** L*********************************************************************** L*********************************************************************** LH 9# F Verkleinerung der x-Koordinate, 0<=s<=1 *** HH 9  FF Verkleinerung der y-Koordinate, 0<=t<=1 *** *L*** hier t=s, aber andere Werte fr t sind mglich *** L*********************************************************************** L*********************************************************************** LH9# F Verschiebung des Bildes in x-Richtung *** LH9# F Verschiebung des Bildes in y-Richtung *** L*********************************************************************** 6F9 Umrechnen in "klassische" Form a,b,c,d,e,f c |F "FF Mastab berechnen usw. o Zeichenschleife  8FeF0U F0    F0    F 0 FF 0 FF !TF8#  FF8#  FFPunkt setzen mit einer Farbe hher als die alte Farbe des Punktes d!!u`+! ! FT$F.Taste prfen fr eventuellen Farbwechsel 8DM !S F  !F # F $F !<߀FFe Popup anzeigen t$FF  JF F Normalisiere Farben Fa BREAK !!!F!!!F FFF ERROR  XXF$F 8"FX!!!F!!!FXF$FF (# FF 0" F #.F(DqU! F 0.00 bis 3.00 #rF4Dq߀߀U! F -0.99 bis 0.99 4F,F F"Fensterkoordinaten ermitteln F40uw!: ! FF0F40uw!; !ߠ FF0ߐF \Fk zeigende Hand HF Fenster zeichnen e!!!!Ft!!F  F!!!F|!!!F8Tߠ!݀!* Programm beendenF}8Tߠ!݀!* Als IFS speichernF8Tߠ!!* Als PIC speichernF4Tߠ!݀!* Neu beginnenFn0Tߠ!ݠ! * IFS ladenF4Tߠ!!* IFS eingebenFn:Tߠ!!* Parameter anzeigenFl<Tߠ!݀!{SPACE,M : Farbwechsel}F F0!!F* & # # F!!FF . ߀F@0%#݀  F Angeklickte Zeile 0'4F'JF F(BF$*.IFS!!F$O!M!FPM!7","7FFXGFTPM!7 ","7 ","7 ","7 ","7 ","7 ","7 F 'FPM! FF 0MF)jF$\*.PIC!!F )bFP!V !}F $F'bF<F)F!$*.IFS!!F )F$I!M!FM!!FJXGF6M! ! ! ! ! ! ! FF (F 0MF4 FFFF$F+"FFFF*LY! "Anzahl Funktionen :"FFd!F 85 FF ) FzXGF,LY! " Drehwinkel("7") :"FF   F,LY! " Faktor X("7") :"FF   F,LY! " Faktor Y("7") :"FF   F,LY! "dx("7" ) :"FF  F,LY! "dy("7" ) :"FF  FF9 )FFFF .FDF<FFFF>LY! ")pF X* Y* x y p qFXGF F9nLY!߀ "p"! "q"  !! "  !! "  !! "FF@L !! " !! " !! F +FF0"!#!$F ,b!߀ FHF,F FLY! " Moment...F&4 !݀F  default p is 1 0FXGF:H9ߣ =p(    Fi =det(i%) )0 FF 1F0FXGFH9 F*XG# F H9F 2>F0 FF 2FG 01500mal rechnen um die Grenzen zu ermitteln 0F0F0 Fe0߾ F 0FF 0 FFXGF0U F0    F0    F 0 FF 0 FF 3F0u! F0w! F0u! F0 w ! F$F 3F  xs,ys sind Skalenfaktoren &0 33333#߮w F&0 33333# ߮w F  4d# PF!<F$F 0F0F # FFFF   F 5߀F 8w߀!V F 8V F8V F!!!FXGF 5h F 8FF!!!F 85F !!!F$F 54F$FF<<<<<<== ===$=,=4=<=D=L=T=\=d=l=t=|================>> >>>$>,>4>:>@>F>L>R>X>^>d>j>p>t>x>|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>??? ????$?*?0?6?<?=?>???@?A?B?C?D"P!#104/"/".0' Bei Fehler und Break Farben normalisieren ON ERROR GOSUB erfarb ON BREAK GOSUB brfarb ' ' Unter welcher Auflsung laufen wir? SELECT XBIOS(4) CASE 0 maxfarb%=15 maxx%=320 maxy%=200 charh%=8 charw%=8 VSETCOLOR 0,0,0,0 VSETCOLOR 1,7,7,7 CASE 1 maxfarb%=3 maxx%=640 maxy%=200 charh%=8 charw%=8 CASE 2 maxfarb%=1 maxx%=640 maxy%=400 charh%=16 charw%=8 ENDSELECT ' maxtrans%=20 ! Maximal 20 Transformationen DIM a(maxtrans%),b(maxtrans%),c(maxtrans%),d(maxtrans%),e(maxtrans%),f(maxtrans%),p(maxtrans%) DIM phi(maxtrans%),s(maxtrans%),t(maxtrans%) DIM wahr(100) ! Array zur indirekten Adressierung der Transformationen ' path$=CHR$(GEMDOS(25)+65)+":\" ' CLS ALERT 1,"IFS Generator| | 1988 mhmb|Michael Harwerth",1,"Aha.",dummy% ALERT 1,"Literaturhinweis:|Peitgen, Heinz-Otto|The Science of Fractal Images|Springer Verlag",1,"Ach so.",dummy% ALERT 1,"Letzter Tip:| |Mausklick hilft immer!",1,"Is klar.",dummy% DO abort!=FALSE ' ************************************************************************* t%=2+RANDOM(2) ! 2 bis 4 affine Abbildungen *** ' *** t% erhhen bringt kompliziertere Bilder hervor. *** ' ************************************************************************* iter=100000 ! 100000 Iterationen (Nur fr altes SAVE ntig) ' p1=0 FOR i%=1 TO t% ! generiere Koeffizienten ' *********************************************************************** phi(i%)=180-RANDOM(8)*45 ! Drehwinkel; hier Vielfache von 45 Grad *** ' *** je zuflliger phi, desto unregelmiger die Bilder *** ' *********************************************************************** ' *********************************************************************** s(i%)=@fu(1) ! Verkleinerung der x-Koordinate, 0<=s<=1 *** t(i%)=s(i%) ! Verkleinerung der y-Koordinate, 0<=t<=1 *** ' *** hier t=s, aber andere Werte fr t sind mglich *** ' *********************************************************************** ' *********************************************************************** e(i%)=@fu(0) ! Verschiebung des Bildes in x-Richtung *** f(i%)=@fu(0) ! Verschiebung des Bildes in y-Richtung *** ' *********************************************************************** @hin ! Umrechnen in "klassische" Form a,b,c,d,e,f NEXT i% ' @init ! Mastab berechnen usw. ' ' Zeichenschleife ' i%=0 REPEAT p=wahr(RND*100) nx=a(p)*x+b(p)*y+e(p) ny=c(p)*x+d(p)*y+f(p) x=nx y=ny IF i%>30 x0%=(x-xmi)*xs y0%=maxy%-(y-ymi)*ys ' Punkt setzen mit einer Farbe hher als die alte Farbe des Punktes PSET x0%,y0%,MIN(SUCC(PTST(x0%,y0%)),maxfarb%) ENDIF ' Taste prfen fr eventuellen Farbwechsel a%=INSTR("M ",UPPER$(INKEY$))-1 IF a%>=0 @farbe(a%) ENDIF IF MOUSEK=2 @manip ! Popup anzeigen ENDIF INC i% UNTIL abort! LOOP ' ' Normalisiere Farben PROCEDURE brfarb ! BREAK VSETCOLOR 0,7,7,7 VSETCOLOR 1,0,0,0 EDIT RETURN PROCEDURE erfarb ! ERROR IF ERR<3 AND ERR>0 RUN ELSE VSETCOLOR 0,7,7,7 VSETCOLOR 1,0,0,0 ERROR ERR ENDIF RETURN ' FUNCTION fu(art%) SELECT art% CASE 0 RETURN ROUND(3*RND,2) ! 0.00 bis 3.00 CASE 1 RETURN ROUND(1-2*RND,2) ! -0.99 bis 0.99 ENDSELECT ENDFUNC ' PROCEDURE manip ' Fensterkoordinaten ermitteln xl=MIN(MAX(10,MOUSEX-100),maxx%-25*charw%) xr=xl+24*charw% yo=MIN(MAX(10,MOUSEY-70),maxy%-10*charh%) yu=yo+9*charh% ' DEFMOUSE 3 ! zeigende Hand SHOWM ' ' Fenster zeichnen GET xl,yo,xr,yu,b$ DEFFILL 0,1,0 BOUNDARY 1 PBOX xl,yo,xr,yu BOX xl,yo,xr,yu TEXT xl+5,yo+1*charh%,"* Programm beenden" TEXT xl+5,yo+2*charh%,"* Als IFS speichern" TEXT xl+5,yo+3*charh%,"* Als PIC speichern" TEXT xl+5,yo+4*charh%,"* Neu beginnen" TEXT xl+5,yo+5*charh%,"* IFS laden" TEXT xl+5,yo+6*charh%,"* IFS eingeben" TEXT xl+5,yo+7*charh%,"* Parameter anzeigen" TEXT xl+5,yo+8*charh%,"{SPACE,M : Farbwechsel}" ' REPEAT MOUSE xm,ym,km UNTIL km<>0 AND (xm>xl AND xmyo AND ym2 dummy=1+INT((ym-yo-charh%/2)/charh%) ! Angeklickte Zeile SELECT dummy CASE 1 EDIT CASE 2 FILESELECT path$+"*.IFS","",file$ OPEN "O",#1,file$ PRINT #1,t%;",";iter FOR j%=1 TO t% PRINT #1,a(j%);",";b(j%);",";c(j%);",";d(j%);",";e(j%);",";f(j%);",";p(j%) NEXT j% PRINT #1,@strip$(file$) CLOSE #1 CASE 3 FILESELECT "\*.PIC","",file$ IF file$<>"" BSAVE file$,XBIOS(2),32000 ENDIF CASE 4 abort!=TRUE CASE 5 FILESELECT path$+"*.IFS","",file$ IF file$<>"" OPEN "I",#1,file$ INPUT #1,t%,iter FOR i%=1 TO t% INPUT #1,a(i%),b(i%),c(i%),d(i%),e(i%),f(i%),p(i%) NEXT i% CLOSE #1 file$=@strip$(file$) CLS @init ENDIF CASE 6 CLS REPEAT PRINT AT(1,1);"Anzahl Funktionen :"; FORM INPUT 2,a$ t%=VAL(a$) UNTIL t%>0 AND t%<=maxtrans% FOR i%=1 TO t% PRINT AT(1,2);"Drehwinkel(";i%;") :"; INPUT phi(i%) PRINT AT(1,3);"Faktor X(";i%;") :"; INPUT s(i%) PRINT AT(1,4);"Faktor Y(";i%;") :"; INPUT t(i%) PRINT AT(1,5);"dx(";i%;") :"; INPUT e(i%) PRINT AT(1,6);"dy(";i%;") :"; INPUT f(i%) @hin NEXT i% CLS @init CASE 7 SGET s$ change!=FALSE REPEAT CLS PRINT AT(1,1);"pF X* Y* x y p q" FOR i%=1 TO t% @rueck PRINT AT(1,1+i%);"p";STR$(i%,1);"q";STR$(phi(i%),6,2);STR$(s(i%),6,2);STR$(t(i%),6,2); PRINT STR$(e(i%),6,2);STR$(f(i%),6,2);STR$(p(i%),6,2) NEXT i% REPEAT MOUSE mx,my,mk UNTIL MOUSEK IF mk=1 i%=MIN(MAX(1,my/charh%),t%) j%=MIN(1+(mx/charw%-2)/6,5) PRINT AT(2+(j%-1)*6,1+i%);" "; PRINT AT(2+(j%-1)*6,1+i%); SELECT j% CASE 1 phi(i%)=@in(phi(i%)) CASE 2 s(i%)=@in(s(i%)) CASE 3 t(i%)=@in(t(i%)) CASE 4 e(i%)=@in(e(i%)) CASE 5 f(i%)=@in(f(i%)) ENDSELECT @hin change!=TRUE ENDIF UNTIL mk=2 IF change! CLS @init ELSE SPUT s$ ENDIF DELAY 1 ENDSELECT ELSE DELAY 1 ENDIF DEFMOUSE 0 RETURN ' ' Eingabefunktion (simpel, sorry!) FUNCTION in(a) LOCAL a$ a$=STR$(a,6,2) FORM INPUT 6 AS a$ RETURN VAL(a$) ENDFUNC ' PROCEDURE hin a(i%)=s(i%)*COSQ(phi(i%)) b(i%)=-s(i%)*SINQ(phi(i%)) c(i%)=t(i%)*SINQ(phi(i%)) d(i%)=t(i%)*COSQ(phi(i%)) RETURN ' PROCEDURE rueck phi(i%)=ATN(-b(i%)/(a(i%)+1.0E-98))*180/PI a=a(i%)/(COSQ(phi(i%))+1.0E-98) b=-b(i%)/(SINQ(phi(i%))+1.0E-98) IF ABS(a)>ABS(b) s(i%)=a ELSE s(i%)=b ENDIF a=d(i%)/(COSQ(phi(i%))+1.0E-98) b=c(i%)/(SINQ(phi(i%))+1.0E-98) IF ABS(a)>ABS(b) t(i%)=a ELSE t(i%)=b ENDIF RETURN ' FUNCTION strip$(in$) LOCAL i% i%=RINSTR(in$,"\") path$=LEFT$(in$,i%) in$=MID$(in$,i%+1) RETURN in$ ENDFUNC ' PROCEDURE init PRINT AT(1,1);"Moment..." ARRAYFILL wahr(),1 ! default p is 1 p1=0 FOR i%=1 TO t% p(i%)=0.01+ABS(a(i%)*d(i%)-b(i%)*c(i%)) ! =det(i%) p1=p1+p(i%) NEXT i% p=0 FOR i%=1 TO t% p(i%)=p(i%)/p1 FOR j%=p*100 TO (p+p(i%))*100 wahr(j%)=i% NEXT j% p=p+p(i%) NEXT i% ' ' 1500mal rechnen um die Grenzen zu ermitteln x=0 y=0 xmi=100000000 xma=-100000000 ymi=xmi yma=xma FOR i%=1 TO 1500 p=wahr(RND*100) nx=a(p)*x+b(p)*y+e(p) ny=c(p)*x+d(p)*y+f(p) x=nx y=ny IF i%>30 xmi=MIN(xmi,x) xma=MAX(xma,x) ymi=MIN(ymi,y) yma=MAX(yma,y) ENDIF NEXT i% ' ' xs,ys sind Skalenfaktoren xs=0.95*maxx%/(xma-xmi+1.0E-98) ys=0.95*maxy%/(yma-ymi+1.0E-98) ' IF (xma-xmi)>100000 abort!=TRUE ENDIF ' x=0 y=0 ' @farbe(0) CLS RETURN ' ' PROCEDURE farbe(art%) IF maxfarb%>2 red%=MAX(1,RANDOM(7)) green%=RANDOM(7) blue%=RANDOM(7) VSETCOLOR 1,red%,green%,blue% FOR i%=2 TO maxfarb% IF art%<>0 r%=i% VSETCOLOR i%,r%,r%/red%*green%,r%/red%*blue% ELSE VSETCOLOR i%,red%,green%,blue% ENDIF NEXT i% ENDIF RETURN . m.. READ_ME TXT In@IFS_EDITPRG QSOURCE PAS XV Anleitung zum III FFF SS EEE DD III TTT O RR I F S E D D I T O O R R VERSION I FFF S === EEE D D I T O O RR I F S E D D I T O O R R 1 . 0 III F SS EEE DD III T O R R Autoren: Rainer Urian Manfred Bertuch Michael Herrmann Dieses Programm darf in der vorliegenden Form frei kopiert werden, es wird auf jegliche urheberrechtlichen Ansprche verzichtet. Teile der nachfolgenden Erluterung wurden ( mit freundlicher Genehmigung des Heinz Heise Verlags ) einem Artikel der "c`t" 11/88,S.166 ff. entnommen. __________________________________________________________________________ S o g e h t ' s a u c h ( von Rainer Urian, Manfred Bertuch, M.H.) ============================= Fraktale erzeugen mit iterierten Funktionssystemen Von Zeit zu Zeit erweisen sich Ergebnisse aus den Studierstuben der Mathematiker als hchst ntzlich und anwendbar, beispielswei- se in der Computergrafik. Dort bemht man sich nach wie vor um mglichst echt und natrlich wirkende Darstellungen, wofr sich die von B.B.Mandelbrot erforschten Fraktale besonders gut eignen. Diese Gebilde lassen sich auch mit iterierten Funktionssystemen erzeugen, was gegenber der von Mandelbrot benutzten Methode einen wichtigen Vorteil bietet. Fraktale Objekte haben sich in der Computergrafik bewhrt, um die zahlreichen Strukturen der Natur nachzubilden. In der Natur zeigt sich nmlich ebenfalls das Prinzip der Selbsthnlichkeit, das auch allen Fraktalen gemein ist. Ein Farnblatt zeigt diese Eigenschaft besonders deutlich. Oberflchlich betrachtet, besteht es aus einem leicht gebogenen Stiel, an dem links und rechts eine Reihe von "Blttern" hngen. Nimmt man nun ein solches Blatt genauer unter die Lupe, erkennt man, da dieses Blatt wiederum aus einem leicht gekrmmten Stil besteht, an dem links und rechts viele Bltter hngen... Theoretisch kann man diesen Proze unend- lich oft wiederholen, jedoch stoppt die Natur aus praktischen Grnden bei einer bestimmten Rekursionstiefe. Auerdem wiederholt sie Struktuten nicht mit mathematischer Genauigkeit, sondern baut kleine, zufllige Streuungen ein. Diese Eigenschaft natrlicher Gebilde kann man sich zunutze machen, um sie mittels Computergrafik zu simulieren. Man mu nun nicht mehr alle Details einzeln eingeben, sondern kommt mit sehr wenigen Daten und einer besonderen Konstruktionsvorschrift aus. Mit dieser Methode brauchen Bilder nicht mehr Pixel fr Pixel beschrieben zu werden; es gengt, die implizite Form der Selbsthnlichkeit in eine mathematische Form zu bringen, was zu einer gewaltigen Reduzierung an Rechenaufwand und Speicherplatz fhrt. M e t h o d e M a n d e l b r o t Benoit B. Mandelbrot, der bekannteste Fraktal-Forscher, bedient sich der Initiator-Generator-Methode, um Fraktale zu beschreiben und zu erzeugen. Dieses Verfahren wurde bereits in c`t 5/88 ausfhrlich vorgerstellt, daher folgt hier nur noch eine kurze Zusammenfassung. Der Generator ist in der Regel eine Vektorkette aus einer bestimmten Anzahl (n) von Teilstrecken, die in etwa die Struktur des Fraktals bestimmt. Wichtig ist, da die einzelnen Teilstrecken kleiner sind als die Luftlinie von Anfangs- und Endpunkt des Generators, da das Fraktal sonst unendlich gro wrde. Der Initiator ist im einfachsten Fall eine Strecke, die das Ganze in Gang bringt. Im ersten Schritt der Konstruktion ersetzt der Generator den Initiator. Der Generator wird dabei so skaliert, rotiert und verschoben, da Start- und Endpunkt des Generators mit dem Start- und Endpunkt des Initiators zusammenfallen. Es entstehen n neue Teilstrecken. Im zweiten Schritt werden alle Teilstrecken des vorhergehenden Generators wiederum durch den Generator ersetzt, als wren sie jetzt die Initiatoren. Diese Rekursion wird theoretisch unendlich oft wiederholt. In der Praxis bricht man den Proze ab, wenn das Fraktal den gewnschten detailreichtum zeigt. Dieses Verfahren hat nun aber einen entscheidenden Nachteil; man sieht dem Initiator und dem Generator nicht so ohne weiteres die Form des Fraktals an. Meist bedient man sich seiner Intuition und eines "trial and error"- Verfahrens, um ein gewnschtes Gebilde zu erhalten. F ra k t a l e n a c h M . F . B a r n s l e y Die Methode der iterierten Funktionssysteme (IFS) lst dieses Problem, indem sie einfach den umgekehrten Weg geht. Hat man die Art und Weise der Selbsthnlichkeit eines Gebildes festgestellt, so kann man mit einem fast rein mechanischen Verfahren ein System von Funktionen bestimmen, das genau dieses Gebilde erzeugt. Ein solches Funktionssystem besteht aus mehreren affinen Transformationen T#1 ... T#n. Unter einer affinen Transformation versteht man eine Abbil- dung, die irgendein Gebilde dreht, staucht, vergrert, verschiebt, verzerrt oder eine beliebige Kombination aus diesen Vorgngen durchfhrt. Sechs Variablen ( a bis f ) legen eine solche Transformation im zweidimen- sionalen Raum eindeutig fest ( siehe unter "Affine Transformationen" ). Schlielich bekommt jede Transformation des Funktionensystems noch eine Wahrscheinlichkeitszahl zugewiesen, die von der relativen Gre der Figur abhngt und damit bestimmt, wie wichtig diese Transformation fr das zu erzeugende Bild ist. Ab jetzt ist der Computer an der Reihe. Der erste Schritt besteht in der Auswahl eines beliebigen Startpunktes und einer Transformation gem den vergebenen Wahrscheinlichkeitszahlen. Der Startpunkt wird nun dieser Transformation unterworfen und gezeichnet. Im zweiten Schritt ist wieder eine Transformation zufllig auszuwhlen und auf den neuen Punkt anzuwenden. Dieser Proze wiederholt sich beliebig oft. Insgesamt ist dieser Vorgang eine Komposition oder Iteration von Transformationen. Er bewirkt, da sich anfangs scheinbar zufllig verteilte Punkte immer mehr verdichten und das fraktale Bild langsam deutlich hervortritt. Es sieht so aus, als wrde das Gebilde "hergebeamt", und wer wei, vielleicht kann eines Tages selbst Materie per IFS beschrieben werden. Je mehr Iterationen durchgefhrt werden, um so klarer wird das Bild. Es ist allerdings ratsam, die ersten paar Iterationen (hier zwanzig) nicht zu zeichnen, da sich der Anfangspunkt eventuell nicht auf der Figur befindet. Weil die Transformationen aus kontraktiven Transformationen bestehen sollten, wird jeder Startpunkt, der auerhalb der Figur liegt, mit jeder Iteration an diese herangezogen. Nach einigen Iterationen liegt er dann innerhalb der Figur. Mittels IFS erzeugte Figuren heien deshalb auch Attraktoren (lat. "attrahere" = anziehen). C o l l a g e n - T h e o r e m Auf den ersten Blick scheint es ziemlich kompliziert zu sein, die rich- tigen Transformationen zu finden, um ein bestimmtes Bild zu approximieren. Doch glcklicherweise gibt es dafr einen systematischen Weg. Man mu nur erkennen, worin die Selbsthnlichkeit besteht und wie es sich aus selbsthnlichen Teilen zusammensetzt. Das ist bei einfachen Fraktalen besonders leicht sichtbar, beispielsweise bei der Sierpinsky-Pfeilspitze. Man kann sich vorstellen, da dieses Fraktal aus der Vereinigung von drei Unterbildern, eben drei kleineren Pfeilspitzen, entstanden ist. Jedes Unterbild ist nun wiederum aus drei Unterbildern entstanden, und so weiter... Mit drei affinen Transformationen kann man die Sierpinsky- Pfeilspitze auf ihre drei unmittelbaren Unterbilder abbilden. Diese Methode funtioniert, da die Sierpinsky-Pfeilspitze praktisch aus ihren drei Unterbildern zusammengekittet ist. Sie basiert auf dem Collage- Theorem. Auch sehr komplexe Bilder, etwa Fotografien von Landschaften, knnen als Fraktal oder als Zusammensetzung von Fraktalen aufgefat werden, wenn ihre Bestandteile Selbsthnlichkeit aufweisen. Da in den Parametern des IFS nach wie vor die vollstndige Bildinformation enthalten ist, stellt dieser Parametersatz eine Kodierung des Bildes dar. Gemessen an der Datenmenge des Bildes selbst, ist die IFS-Kodierung gleichzeitig eine gewaltige Komprimierung - in Einzelfllen um Faktoren bis zu 10.000 und mehr [1]. Dieses Verfahren bekommt daher praktische Bedeutung, wenn es um die Archivierung oder bertragung von Bildern geht. Nachteilig ist allerdings der hohe Rechenzeitbedarf, besonders bei der Bestimmung der IFS-Parameter. Bei komplexen Szenen bentigt ein 68020-System Zeiten um 100 Stunden. M.F. Barnsley hat inzwischen eine Firma gegrndet, die Systeme mit spezieller Hardware fr die schnelle IFS-Kodierung auf den Markt bringen will. I F S - E d i t o r Das Programm erlaubt die Erzeugung beliebiger IFS-Bilder mit maximal zwlf Transformationen, wurde in CCD Pascal Plus geschrieben und luft sowohl in hoher, wie auch in mittlerer Bildschirmauflsung. Es gibt zwei Mglich- keiten, die Transformationen einzugeben. ber den Menpunkt "IFS-Daten" lassen sich die Koeffizienten a bis f direkt eingeben oder modifizieren. Durch "Reset" lt sich die gesamte Transformationstabelle lschen und die Default-Parameter werden wieder hergestellt. Unter dem Menpunkt "Fraktale" sind fnf Beispiele anwhlbar (die entsprechenden IFS-Trans- formationen werden angezeigt und mssen mit "Okay" besttigt werden). Man kann sich die Transformationskoeffizienten vom Computer ber "Koordinaten" auch berechnen lassen. Dazu sind zunchst die Koordinaten von drei Punkten in die erste Zeile (Nr.0) des Dialogs zu schreiben. Aber Achtung, die drei Punkte dieses Trippels drfen auf keinem Fall auf einer Geraden liegen. Der Rechner ermittelt die Transformationen durch Lsen eines Gleichungssystems, und dieses htte dann keine eindeutige Lsung. Danach werden die korrespondierenden drei Punkte des ersten Unterbildes in die zweite Zeile geschrieben. Die drei Punkte des zweiten Unterbildes in die dritte Zeile und so fort... Wenn alle Transformationen auf diese Weise festgelegt wurden, klickt man das "Okay"-Feld an. Der Computer berechnet nun die Transformationskoeffi- zienten a bis f. Diese knnen im bekannten Dialog, der danach angezeigt wird, noch von Hand verndert werden. Jetzt berechnet der ST die Wahr- scheinlichkeitszahlen fr die Transformationen. Er sttzt sich dabei auf die Determinante aus den ersten vier Parametern, was brauchbare Resultate liefert. Per Menpunkt "Grafik" wird das Zeichnen begonnen. Um die Figur mglichst ideal auf dem Bildschirm zu plazieren, kann sie mit den Angaben X-Scale und Y-Scale in beiden Richtungen gedehnt oder gestaucht, sowie mit X- Offset und Y-Offset verschoben werden. Nun mu nur noch die Anzahl der Iterationen (gleich Menge der Schleifendurchlufe) eingeben werden. Wenn die Wahrscheinlichkeiten fr alle Transformationen gleich sind, ist auch eine rekursive Berechnung des Bildes mglich. Dadurch wird das Bild gleichmiger ausgefllt. Bei der Eingabe der Rekursionstiefe sollte man bedenken, da die Anzahl der Punkte exponentiell mit der Tiefe wchst (Default beachten). Beim "Testen" eigener Fraktale sollte man also mit einer geringen Rekursions- tiefe (z.B.fnf), bzw. wenigen Iterationen (z.B. dreitausend) beginnen, da aus Geschwindigkeitsgrnden auf eine Abbruchmglichkeit whrend des Zeichnens verzichtet wurde. Des weiteren ist noch zu beachten, da es manchmal bei eigenen Versuchen zu Programmabstrzen durch Fliekommafehler (o..) kommen kann. Man sollte vor dem Ausprobieren besser schon eine gewisse Vorstellung davon haben, was die eigebenen Transformationen bewirken und darauf achten, da das Fraktal nicht unendlich wchst, sondern sich aus Teilen zusammensetzt, deren Gre (siehe Beispiele) gegen Null geht. __________________________________________________________________________ A f f i n e T r a n s f o r m a t i o n e n Geometrisch betrachtet bildet eine affine Transformation eine Punktmenge durch eine beliebige Kombination aus Drehung, Streckung und Verschiebung auf eine andere Punktmenge ab. Das Typische einer solchen Abbildung ist, da sie eine Figur nicht bis zur Unkenntlichkeit entstellt, sondern hnlich aussehende Abbilder erzeugt ( affin = verwandt, hnlich ). Grund- eigenschaften bleiben erhalten, ein Dreieck bleibt ein Dreieck. Im zwei- dimensionalen Raum hat eine solche Transformation T(x,y) = (x',y') die Form x' = ax + by + e y' = cx + dy + f . Zur Transformation irgendeiner Figur ist im Prinzip jeder ihrer Punkte durch die Abbildungsvorschrift zu schleusen. Die Matrix mit den Werten a bis d bewirkt dabei eine Dehnung und eine Verzerrung, die Koeffizienten e und f eine Verschiebung (Translation). Zur Abbildung eines Dreiecks gengt es bereits, die drei Eckpunkte zu transformieren, da diese das transfor- mierte Dreieck eindeutig festlegen. U n b e k a n n t e K o e f f i z i e n t e n Wie kann man nun aber die Koeffizienten a bis f bestimmen, wenn man eine Figur F in eine Figur F' transformierne will? An den beiden vorher beschriebenen Dreiecken ist dies besonders anschaulich darstellbar. Da sechs unbekannte Parameter gesucht sind, bentigt man sechs Gleichungen, um zu einer eindeutigen Lsung zu gelangen. Dazu greift man sich drei Kordinaten der Figur F und die drei korrespondierenden Koordina- ten der Figur F' heraus. Bei einem Dreieck bieten sich hierfr die Eckpunkte PQR und P'Q'R' an. Die sechs Gleichungen lauten dann: P'x = Px*a + Py*b + e P'y = Px*c + Py*d + f Q'x = Qx*a + Qy*b + e Q'y = Qx*c + Qy*d + f R'x = Rx*a + Ry*b + e R'y = Ry*c + Ry*d + f Dieses Gleichungssystem lt sich nun mit dem Determinanten-Verfahren bequem auf dem Rechner lsen. Mehr Punktepaare sind nicht ntig, da jede Transformation durch drei Koordinaten und deren Bilder eindeutig festge- legt ist. W a h r s c h e i n l i c h k e i t s z a h l e n Jeder Transformation Ti wird eine bestimmte Wahrscheinlichkeitszahl Pi zugeordnet. Diese hat keinen Einflu auf die Gestalt des Bildes, sondern auf die Geschwindigkeit und Gleichmigkeit, mit der es erzeugt wird. Jeder Wert pi sollte gleich dem Verhltnis aus der Gre des von der zuge- hrigen Transformation erzeugten Unterbildes zur Gesamtgre des Bildes sein. Die Summe aller p-Werte ergibt dann 1. Da das Verhltnis der Flcheninhalte von Figur und transformiertem Bild gleich der Determinante der Transformationsmatrix ist, lassen sich die pi einfach berechnen: [ a b ] det ( | | ) = a*d - b*c [ c d ] det ( Ti ) p = ------------- , k { 1...n } i |det(Tk)| Wenn die Determinante den Wert 0 ergibt, so ist es sinnvoll, ihr einen kleinen Wert ungleich 0 (z.B. 0.01) zuzuweisen, da sonst die entsprechende Transformation berhaupt nich ausgefhrt wrde. Dieser Fall tritt dann auf, wenn eine Transformation das Bild nur auf eine Gerade abbildet (z.B. beim Farnblatt). __________________________________________________________________________ L i t e r a t u r [1] M.F.Barnsley, A.D.Sloan: "A better way to kompress images", Byte 1/88, S.215 [2] M.F.Barnley, V.Ervin, D.Hardin, J.Lancaster: "Solution of an inverse problem for fratals and other sets", Proceedings of the National Aca- demy of Science, Vol.83, 1/86, S.1975-1977 [3] M.F.Barnley, S.Demko: "Iterated function systems and the global con- struction of fractals", The Proceedings of the Royal Society of London A399, 1985, S.243-275 ` o"h#`#d#h,Oc.N//Bg?<JNA Bb3lN0NMNV?<NNN^NuNV?<NNN^NuADM ?Hz~&/,HNVA<-HPN N?NuSTR ?Hz~./,HNVA-HPN 0.J@fv~/~0A]"O2"?</ .r //N"-A~?"nN$n/ ? _O NO1 ?Hz~R/,HNVA-HPN ?<NA0 ~S0.rAoN~Tp=@=n0.nn0~TA]"O2"~U?</< NA0 Rn``V~V~V0.J@jH~Wp=@=n0.nm.~WA]"O2"?<}/ _TNA ?Hz~[/,HNVA-HPN p=@~\p.r-Afp=@Hn? _ORNFENSTER_ZU?Hz~m/,HNVA:-HPN 09.@e ~n~o?9.Nn~pp3.~q~rN^,_X>NuCLEAR_WIND?Hz~w/,HNVA-HPN N}~x09.@d$~y~z?9.BgBgBgBgNm~{~|By.~}?9.HnHnHnHnNk~~?.?.?.?.NwZ~NyN><?<N{h><Bg0AN{><?.?.?.?.Ns><Ny><N}><09.@d?<0AN{`><?<0AN{><?<><N|N^,_X>NuFDT ?Hz></,HNVA-HPN 0.A $AA]"O2"0.A $AA]"O2"N0.A $AA]"O2"0.A $AA]"O2"NNNA0 ><A]"O2"p?NN0@d?<><A]"O2"A0 .2.N^,_X> _TNACRB ?Hz></,HNVA$-HPN BgNA0 ><Bn09.rHS@=@0.nn2><A]"O2"?.N^?/NA0 Rn`><BgNA0 ><Bn09.rHS@=@0.nn><><><0.A /?.N$ ?/A]"O2"N(AA0 ><A]"O2"0.A AA]"O2"NA0 ><0.A ><A]"O2"A2A0 Rn`>><p=@><09.rHrAo><Bn09.rHU@=@0.nnv><><0.A AA]"O2"0.R@A AA]"O2"NN?<BnRn`0.N^,_X>NuTAB ?Hz></,HNV.A -HPN N><0.@dZ><><C ZEpQ><C $EpQ><><C E>p=Q><`V><><><C EpQ><C VEpQ><><C E>p=Q><?<ZBgBg?<B?<N\-@></.?<Bg?<?<?<@?<?<?<N\=@6></.?<Bg?<?<BgBgBgBgN\=@8></.?.80|AeAO"Op?"Q?<BgNbh></.?<Bg?<?<BgBgBgBgN\=@4></.?.40|AeAO"Op?"Q?<BgNbh><BnB n Bn><><><0.BA @//.?<Bg?<2.BXA??<?<BgBgN\" A1><NHn?<0.B@R@??<Nl"_Ep?$Q></.0.BA @A?00|AeAO"Op?"Q?<BgNbh><RnB`*><BnB n Bn.><><Bn@ n@n><><><0.@A2.BC AA//.?<Bg2.@ \A?2.BXA??<?<Bg?<N\" AD1></.0.@A2.BC AAAD?00|AeC <?<?<><N^0Rn@`RnB`></.?<prArA?><?<?<?<?<?<?<N\=@:></.?<prA?><?<!?<?<?<?<?<N\=@<></.?.:0|AeC"O$O?<?<Nbh></.?.<0|AeCO$OpQ?<?<Nbh></.Na&></.?.DN`<=@>></.N`></.N\><0.>n:fZ><><"np2><BnB n Bn4><><><BgNA.0 ><Bn@ n@n><><></.0.@A2.BC AAAD?00|Ae"n0.@A 0.BA @/ Nc><p+C><"n0.@A 0.BA @p)r-Afp-C><"n0.@A 0.BA @/ ?<"n0.@A 0.BA @p)J@f0"n0.@A 0.BA @EpQ><"n0.@A 0.BA @p)rAfh"n0.@A 0.BA @N?< ?<"n0.@A 0.BA @p)rAfh"n0.@A 0.BA @N?< ?<><"n0.@A 0.BA @p)rAll"n0.@A 0.BA @N$n0.@A 0.BA @/ ?<"n0.@A 0.BA @p)r Af><><"n0.@A 0.BA @/ ?<"n0.@A 0.BA @N?< ?<p?"Q><"n0.@A 0.BA @p)r Af><><"n0.@A 0.BA @/ ?<"n0.@A 0.BA @N?< ?<p?"Q><N"n0.@A 0.BA @/ ?<N"n0.@A 0.BA @/ ?<"n0.BA $0.@A/ NHn?<A.]"O2""n0.BA $0.@A I]$O4$NNA.0 ><"n0.@A 0.BA @NHn?<p?"QRn@`H><A.]"O2"p?NN0"n2tBWC@d"n0.B><2><RnB`><N^,_X> _ON 0000AbbruchOkayX999999____.___Nr. ___X1___ ___Y1___ ___X2___ ___Y2___ ___X3___ ___Y3___ Eingabe der Punkte-Trippel 0 1 2 3 4 5 6 7 8 91011T_ ___a____ ___b____ ___c____ ___d____ ___e____ ___f____Eingabe der IFS-Koeffizienten 1 2 3 4 5 6 7 8 9101112EDITIFS ?Hz></,HNVA.-HPN ?<HyHyzHy.N><N^,_X>NuEDITPNT ?Hz></,HNVA,-HPN BgHyHyzHy.N><N^,_X>NuE ?Hz>< /,HNVAb-HPN A]"O2"A*]"O2"NAB]"O2"NA]"O2"A0]"O2"NA6]"O2"NN>< A]"O2"A$]"O2"NA<]"O2"NNA6]"O2"A*]"O2"NA]"O2"NN><A<]"O2"A0]"O2"NA]"O2"NNAB]"O2"A$]"O2"N><A]"O2"NNA0 .2.N^,_X> _O6NSETMAT ?Hz></,HNVA-HPN Bn nn><><><"n0.A0.@AAA]$O4$ I0 ><"n0.A0.@R@AAA]$O4$ IA0 ><"n0.A><?<N IA$0 ><Rn`8N^,_X> _XNOV ?Hz>< /,HNVA-HPN HnN><!Bn nnf><!0.A2.CA2.RAC $4.BnEBAA]"O2"AA0 Rn`><"AO"O2p "QN?/><#A]"O2"N(A0 .2.N^,_X> _O NTRANSFORM ?Hz><*/,HNVA-HPN HnN><+AO"O2p "QN?/A0 ><,09.]@3.><-Bn09.rH=@0.nn><.><.></0.A $/?.BgBgA]"O2"ND$ ?/AA0 ><00.A $AA]"O2"Bg0.A @AzHpN ><10.A $/?.?<BgA]"O2"N$ ?/AA0 ><20.A $AA]"O2"Bg0.A @AzHpN><30.A $/?.Bg?<A]"O2"NH$ ?/AA0 ><40.A $AA]"O2"Bg0.A @AzHpN><50.A $/?.?<?<A]"O2"N$ ?/AA0 ><60.A $AA]"O2"Bg0.A @A zHpNߎ><70.A $/?.?<BgA]"O2"NJ$ ?/AA0 ><80.A $AA]"O2"Bg0.A @AzHpN><90.A $/?.?<?<A]"O2"N$ ?/AA0 ><:0.A $AA]"O2"Bg0.A @A"zHp><;Nތ><NuITERATE ?Hz><C/,HNVA-HPN N?/A0 ><Dp=@><E><F><F0.R@=@><GA]"O2"0.A A2A]"O2"N0@d><H0.A $AA]"O2""n I]$O4$N0.A $AA]"O2""n I]$O4$NN0.A $AA]"O2"NA0 ><I0.A $AA]"O2""n I]$O4$N0.A $AA]"O2""n I]$O4$NN0.A $AA]"O2"NA0 ><J"nA]$O4$ I0 ><K"n><LA]$O4$ I0 N^,_X> _PNITERDRAW ?Hz><U/,HNVA-HPN ?<BgBg?<?<N\-@><V/.?<Bg?<?<?<?<Bg?<N\=@><W/.?<prArA?><X?<?<?< ?<?<?<N\=@><Y/.?<prA?><Z?< ?<?< ?<?<?<N\=@><[?9.|N?<HnNZ><\/.?.0|AeCO$OpQCO$OpQAO"Op?"Q><]?<BgN^0><^/.?.0|AeCTO$OpQ?<?<Nbh><_/.?.0|AeCO$OpQ?<?<Nbh><`/.Na&><a/.?.N`<b><c/.?.0|AeHnNc><dC/ ?<PN IO$O4p$QN?/N80><e3.|><f/.N`><g/.N\><hN><iBgNA0 ><jBgNA0 ><kBn nn><kHnHnNRn`><lN}><mBn=y.|0.nn><n><n><oHnHnN><pA]"O2"09.?NN09.?NNN80?09.A]"O2"29.?NN29.?NNN82A?><qNsRn`D><r><sN}N^,_X>NuAbbruchOkay 99999Iterationen: _____RECURS ?Hz><y/,HNVAB-HPN 0.rAo(><z><{Bn09.rH=@0.nn><|><|><}0.A $AA]"O2"A]"O2"N0.A $AA]"O2"A]"O2"NN0.A $AA]"O2"NA0 ><~0.A $AA]"O2"A]"O2"N0.A $AA]"O2"A]"O2"NN0.A $AA]"O2"NA0 ><A]"O2"09.?NN09.?NNN80?09.A]"O2"29.?NN29.?NNN82A?Ns><0.S@?A]"O2"A]"O2"><N><Rn`><N^,_X> _ONRECDRAW ?Hz></,HNVA-HPN BgNA0 ><BgNA0 ><?<BgBg?<?<N\-@></.?<Bg?<?<?<?<Bg?<N\=@></.?<prArA?><?<?<?< ?<?<?<N\=@></.?<prA?><?< ?<?< ?<?<?<N\=@><?9.~N?<HnN></.?.0|AeCO$OpQCO$OAO"Op?"Q?<BgN^0></.?.0|AeCO$OpQ?<?<Nbh></.?.0|AeC^O$OpQ?<?<Nbh></.Na&></.?.N`<></.?.0|AeHnNc><Hn?C/ ?<PN IO$O4p$QNd?/N80><3.~></.N`></.N\><NJ><Bn nn><HnHnNRn`><N}><?9.~A]"O2"A]"O2"Nv><N}><N^,_X>NuAbbruchOkay 99Rekursionen: __DRAWIFS ?Hz></,HNVA -HPN N(><?< BgBg?<?< N\-@></.?<Bg?<?<?<?<BgBgN\=@></.?.0|AeCO$OpQ?<BgNbh></.?<Bg?<?<?<?<?<?<N\=@></.?<Bg?<?<?< ?<Bg?<N\=@></.?<Bg?<?<?< ?<Bg?<N\=@></.?<Bg?<?<?< ?<Bg?<N\=@></.?<Bg?<?<?< ?<Bg?<N\=@></.?<prArA?><?<?<?< ?<?<?<N\=@></.?<prArA?><?<?<?< ?<?<?<N\=@><?9.N?<HnNj><?9.N?<HnNN><?9.N?<HnN2><?9.N?<HnN></.?.0|AeCO$O p QCO$OAO"Op?"Q?<BgN^0></.?.0|AeC\O$O p QCRO$OAO"Op?"Q?<BgN^0></.?.0|AeCO$O p QCO$OAO"Op?"Q?<BgN^0></.?.0|AeCO$O p QCO$OAO"Op?"Q?<BgN^0></.?.0|AeC"O$OpQ?<?<Nbh></.?.0|AeCO$OpQ?<?<Nbh></.?.0|Ae?< BgNh></.Na&><Nׂ@d&/.?.0|AeBgBg><Nh`$></.?.0|Ae?<BgNh></.?.N`<=@></.?.0|AeHnNcC/ ?<PN IO$O4p$QNF?/N803.></.?.0|AeHnNcC/ ?<PN IO$O4p$QN?/N803.></.?.0|AeHnNcC/ ?<PN IO$O4p$QNЖ?/N803.></.?.0|AeHnNcC/ ?<PN IO$O4p$QN>?/N803.></.?.0|AeBg?<Nh></.N`></.N\><09.@d?<0A><N{`><?<0AN{><0.nf><NF` ><N><BgBg?<?9.><NwZN^,_X>Nuiterativrekursivy-Scale:___x-Scale:___y-Offset:___999x-Offset:___ZeichenparameterDEF_FRAK ?Hz></,HNVA-HPN 0.`><><><C E.!p Q><p3.p3.3,.3@.><3L.|p3.~><C EzpQCzE zp?$QCzEzp?$Q><CzE zp?$QCzEzp?$QCzE zp?$Q><CzEzp?$QCzE$zp?$Q><CEzpQ`><><><CE.pQ><3.ps3.3@.3.><3#(.|p 3.~><CjEzpQCzEzp?$QCzE zp?$Q><CzEzp?$QCzEzp?$QCzE zp?$Q><CEzpQCzEzp?$Q><CE#zpQ`><><><CTE.pQ><p#3.pd3.p_3.pP3.><3#(.|p3.~><CEzpQCzE zp?$QCzEzp?$Q><CzE zp?$QCzEzp?$QCzEzp?$Q><CpEzpQCzEzp?$QC>EzpQ><CzEzp?$QCzE zp?$QCzEzp?$Q><CzE zp?$QCEzpQCEzpQ><CEzpQCEzpQCzE$zp?$Q><CLEzpQCzE&zp?$QCzE%zp?$Q><CEzpQCzEzp?$Q><CzEzp?$Q`^><><><CE.pQ><3.p3.pd3.p3.><3#(.|><CJE zpQC,EzpQCEzpQ><CEzpQCE zpQCE#zpQ><C#zE%zp?$QCzEzpQC\EzpQ><C:EzpQCE zpQCE$zpQ><CEzpQCzE zp?$QCEzpQ><><CEzpQ`><><><CLE.pQ><By.By.p73.p3.><3L.|><CEzpQCEzpQCzEzp?$Q><CEzpQCE zpQCnEzpQ>< CLE"zpQC.EzpQCEzpQ>< CE zpQCEzpQ>< CE#zpQ>< ` S@ @b@0;N>>< 09.@d6><><09.rH3.><09.><rH3.><?9.Hy.Nn><><NN^,_X> _TN+ 2599+ 11716- 0235+ 0079- 0273+ 0342+ 3148+ 0824+ 0257- 0294+ 0779 Die Spirale - 0040+ 0040+ 0850+ 0440+ 0240+ 0260+ 0280- 0150+ 1600+ 0220+ 0230- 0260+ 0200+ 0160 Das Farnblatt + 4000+ 2000- 0167+ 0167- 0333+ 0333 Eine Schneeflocke - 0500 Die Drachenflche + 1000+ 0500 Die Sierspinsky-Pfeilspitze LOESCHEN ?Hz></,HNVAd-HPN Bn n n><><Bn nn><><><0.A 2.C AACAzEpQ><0.A $2.CA><BgNAA0 Rn`zRn`\><By.>< 3.|p3.~><!3^.3.><"pd3.pd3.><#09.@d"><$><%pZ3.><&><'p23.><(C8E.><)?9.Hy.Nn><*><+NN^,_X>Nu+ 0000ABOUT_LOGO?Hz><4/,HNVA-HPN Nž><5C*E pQ><6CE!p Q><7CE!p Q><8C|E!p Q><9?<BgBg?<)?< N\-@><:/.?<Bg?<?<?<%?<?<?<N\=@><;/.?<Bg?<?<BgBgBgBgN\=@><<=p=@ nn><>><>><?0.2|C@//.?<Bg?<2.XA?BgBg?<?<N\" A1><@/.0.2|C@A?00|Ae0.2|C@AAO"Or?"Q?<Bg><ANbhRn`>><B/.?<prArAr@A?><C?<?< ?< ?<?<?<N\=@><D/.?.0|AeCnO$OpQ?<?<Nbh><E/.Na&><F/.BgN`<=@><G/.N`><H/.><IN\N^,_X>Nusoso...I F S - E d i t o r V 1 . 0 Heinz Heise Verlages, Hannover Mit freundlicher Genehmigung des Rainer Urian und Michael Herrmann Ein Public Domain Programm von MENUE ?Hz><S/,HNVA@-HPN Bn nn^><T><TBn n nB><U><U0.A 2.C AACAzEpQRn`Rn`><V><W><W?<N|><X09.@e><Y><Z?< CO$OpQNU#.><[/9.CtO$O pQNQ=@><\/9.CBO$OpQNQ=@><]/9.CO$O p QNQ=@><^/9.CO$OpQNQ=@><_/9.?.0|AeCO$Op QNT4=@><`/9.?.0|AeCRO$Op QNT4=@><a/9.?.0|AeC O$Op QNT4=@><b/9.?.0|AeCO$OpQNT4=@><c/9.?.0|AeC|O$OpQNT4=@><d/9.?.0|AeC4O$OpQNT4=@><e/9.?.0|AeCO$OpQNT4=@><f/9.?.0|AeCO$OpQNT4=@><g/9.?.0|AeC\O$OpQNT4=@><h/9.?.0|AeCO$OpQNT4=@><ip3.><j><kBn><l09.J@fr><m><n/9.?.0|AeNZ><o=n=n0.ڰnn(><o/9.?.0|AeBgNYhRn`><p><q` ><q/9.?.0|AeNY><r/9.N[><s09.@d?<0AN|T`><s?<0AN|T><t?<N|0><u?<?9.CO$OpQNqt><v?<BgBgBgp/><wBgBgBgBgBgBgBgBgBgBg><xHnHnHnHnHnHnHnN~<=@><y/9.N[@><z=n><{0.rAf><|><}0.nf><~><=n=n0.ڰnn(></9.?.0|AeBgNYhRn`></9.?.0|Ae?<NYh><N><0.ؐnR@?><N><`><0.r A]0.rA^CBd><><NB`><0.ذnf*><><N<><N,><N><><`><0.ذnf><><Nή`><0.ذnf><><N6`f><0.ذnf><><N@`F><0.ذnf6><><CjO$O9p8Q?<N}rAW3.></9.?.0|AeN[><><><09.@dDN^,_X>Nu[2][Soll der Editor|wirklich beendet|werden ?][ Ja |Nein]I F S - E d i t o r Programm beenden Spirale Farnblatt Schneeflocke Drachenflche Pfeilspitze IFS zeichnen Reset IFS-Daten Koordinaten Ende Fraktale Grafik Eingabe ber "IFS-Editor" + 0000Ax#nAr0B1|A"01|><NZ3.z><09.zrAf4><><By.><3.><><p3.><`2><><><p3.><3.><><p3.><NHzP?<N><Hz ?<4N"_E.p?$Q><09.zJ@f2><A.O"Op?"Q?<><N}3.z`R><><><p3.><p3.><By.><By.><By.><NrJ@k><><?<0A?<M?<?< Nz0><?<?9.><CO$OKpJQNqt><?<N|><CE.><?<Hy.BgBgBgBgNo`3.><p3.><ND><NR><09.@e?9.Nn><?9.Np></9.N[@><><><N><Hy"NN nur in mittlerer oder|hoher Auflsung !][ Achso ! ][1][ |Der "IFS-Editor" luft|Nu/,HNVN A-HBn"n0.-I"n0)n m"n$n0*R@3@"n0)n m"n$n0*R@3@"n0n m"n$n0R@2"n0.0)r AJ@f0.R@=@`f0.n m4"n0.R@$n0.p"Q0.S@=@`N^,_ _\N/,HNVN A -H"n 0-I"n0)rAfpT@=@`"n0)R@=@/. ?.N"n 0.-I"nBi"nBi"np. 3@"n3|"np 3@"np2"np3@"np3@"nBi"nBi "nB /. ?<?.NgH/. ?.Ng/. ?.A O"Op?"QBgBgNbhpT@=@"n 0.Bi"n 0.=Q0.rAg@"n 0.$n 0.0*$n 2.j3@=n`"n $n 0.0*$n 2.j3@D/. "n ?)?<?<BgBgBgBg?<?<Nf|=@/. ?.Ng"n 0.$n 0.0*$n 2.j3@=n0.N^,_ _ON/,HNVN A-Hp=@0. U@S@=@"n$n0*=i0.rAo 0.S@=@"n0.=Q`/.?.?<BgBgp. ??<BgBgBgNf|=@/.?.A O"Op?"QBgBgNbh"n0.=iBn0.ng 0.R@=@"n0.=Q`"n0.3n/.?.Ng"n0.0)"n2.io$"n0.$n0.3j"n0.=i"n0.$n0.3j"n0.3n=n0.N^,_ _ON/,HNVN A-Hp@n =@?.Ndl-@/.?=@/.?.CO$OpQN=@/.?.CO$OpQN=@/.?.ClO$OpQN=@/.?.C2O$OpQN=@-n .N^,_ _ON Desk Accessory 6 Desk Accessory 5 Desk Accessory 4 Desk Accessory 3 Desk Accessory 2 Desk Accessory 1 -------------------- Desk /,HNVN A-H/. NdN^,_ _XNNu/,HNVtN A8-H=n0. rA=@-nx?<HnHnHnxHntN8N^,_ _PN/,HNVtN A2-H=n p=@-nx?< HnHnHnxHntN8N^,_ _\N/,HNVtN A0-H=n Bn-nx?< HnHnHnxHntN8N^,_ _\N/,HNVN A*-H/.?. A O"Op?"QBgBgNbhN^,_ _ON/,HNVnN AL-H"n $n p*R@r=n"n / N-@r?<#HnHnzHnrHnnN80.N^,_ _\NNu/,HNVxN p=@-n |?<HnHnHn|HnxN8N^,_ _XN/,HNVxN Bn-n |?<HnHnHn|HnxN8N^,_ _XN/,HNVxN =n Bn-n|?<!HnHnHn|HnxN8N^,_ _\N/,HNVxN =n p=@-n|?<!HnHnHn|HnxN8N^,_ _\NNu/,HNVN Aj-H0.T@=@?.Ndl-@/.??.?.?.?. NF?.N{h?.N{>N^,_ _PNNu/,HNV8N A~-H=nP=nR0.nS@=@T0.n S@=@V0.J@V0. J@VCBd p=@`Bn?<Bg?<?<HnHnHnhHnPHn8BgNN^,_ _PN/,HNVN A"-H0.n n =n`=n 0.N^,_ _XN/,HNVN A"-H0.n m =n`=n 0.N^,_ _XN/,HNVN A-H0."n?"n0"nQ? NNN=@0. n?"n0"n Q? NN,=@"n/ ?."$n? NNR"_2"n/ ?. $n? NN8"_2"n0.$nR2"n 0.$nR2"n0rA^"n 0rA^C=B0.N^,_ _ON/,HNVtN A&-Hp=@?<kHnHnHnxHntN8N^,_Nu/,HNVtN A$-HBn?<kHnHnHnxHntN8N^,_NuNu/,HNV=n<-n$?<HnHnHnHnN8=n"n2"n2"n2"n 2"n 2"n20.N^,_ _O0Q?"<1$0<sNBJ_`.:90H y14SEk0 y1@00 y1@0QNu _318N0918Nu _31:N091:Nu _31@31>N _"_$_21@41>N _31D31BN _"_$_21D41BN _31S@r VR?/L2FNuH2FaS@r VT?/L2FNu#2b _0 @g "_J@jp`02E"|2Ep2 Ag $_JAjr`22E$|2Er@g\H2ZG1Fe$4SBkQ4@SBpQ0"|1F` 4SBkQ4ASBrQ$|1FL2ZJ@f pC$I/92bNu _"_/) g g f0)k @e??<>3|NAXNuH2fp`:H2fp`.H2fp`"H2fp`H2fp` H2fp _/fJ/ gLJ/kJ`L/ fJkB`</jJk2`,gbJk&` Jk`"eb// ebr`r`rAV ?/L2fNuH2fv` H2fv _ `H2fv` H2fv _0HJ[fBBg`,j Dj4<` 4<ЀkSB`Jf].B/BJg 2/.?o /@?A /L2fNuH2fv` H2fv _ [2Jkp`&4<cH@j JgR@kJ@kJgD@?/L2fNuH2fv` H2fv _ [2Jkp`$4<cd JgRkJk~JgD//L2fNuJ/ goNuNuH2f _?///` H2f _0/2// Jv/ 8://N~/DD?DBoJgJgC|k?>BGHGv8ބdRC8ބdRC>HGvކdRC8ބdRCHGv48ބBޅB:>HG8ކkE߇SDkBg|d RdRDUJg( DbRD ME \/L2fNuBBo `H2f _0/2// v/ 8://~/?DD?DBo 8JgJgG|HD8H@0zr)`рe efef<څ߇QgRCgڼd RGdSCJCkD|blo/EC \/L2fNuoH2f _p2/g/ f/W?o `ֲ@e:f$/&e&f // d*B6//J/ k`(&// S@Q`&// `R"/?/[4JfFӃddRdRR/eJd RdRd`/AG o Jk`z0H*kS/JkFft grkRBjIHA~`( dtHAI.kRBҁjBG` BBRBӁj/e2/AG o Jk\/L2fNuH2f _0 @&b(CbC/)?/L2fNuHyp`HyLL2fN Hz@CPt$> nk(:C@hԥ*5 c_1ɿ1.Ź^ k:v #-xŬX&x2n)h? SYQa@%oNˏ'?9x!7I|o|@Eŭ+E75vV 9@{pvP *** Floating point overflow *** *** Floating point division by zero *** `Nu#j _ gde`d 9jNHy`HyNt`t _"_0gR@| e.Gf$S" ghjebb"*f&"`v&A%S"`l&J`ذ|gb*|f8"9Zg0$A#Z`""9^g$A#^`"9bg $A#b"`"E`&R"$b HynNJgr"QHd2S@k"QN _"_0" gde`d gR@ @mz @ e@Ef"fB3@B$`\&A2+@ef "'I`F"3@B$`8$K`ư|f"b#b` |f"^#^` "Z#ZNHeap overruns stackPointer NILPointer not in heapH2 _0"_e /L2NuHyN/B92/|2NuH2 _0 @f0"|22p` "_J@jpE2r4@ BbBS@kQ/L2NuH2 _4SBkt82$_rAdd0 @f0"|22p` "_J@jp6ADb6CG0IS@k$eQ/L2NuH2 _4k2SAk0"_p6B@bE0)CS@kQ/L2NuH2 _2$_r0 @f0"|22p` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/L2NuH2 _4kF2SAk>0 @f0"|22p` "_J@jp6B@bE2SBkQ/L2NuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"y`e HydNN#3#3 .f -|T`-|T nNн3f y3NStack overruns heapH?3 _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?3Nu0NvDNH3|` H3| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/L3Nu09^Nu _3\NBy^Nu[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. .HH* P8P.>6H PXh2&(:j*L :  8"z:T>.$`R0(8$8RPJ:>:Fz*^*b*x(*x(*2 2.b0*0 @@""N@>:R`TN:VBBDBDPR    |.>:p::, :< ^4  z".>:h::, : &\,<,....>>j^^^::".&$       " 6  & & " & <  R:"    L~0(N2 . **********&  PX* F     *      $Z(d ($&$:42,0&$*,0.4\.0DX<"$>,$8(l*lrh\,&D0T>0,8&&,F.:FFFF*@4n(>2020nD(."F<"..ZJ"4\ZBBL:\  @@(&.$@$$2$*|4$&&$$6   $L    8@F D"2 T &( 0&  >             $" D z  f H F  J  <   , FR ( *@ B @ B V  {* IFS-Editor Version 1.0 (Public Domain) *} {* geschrieben in CCD-Pascal+ von Rainer Urian und Michael Herrmann *} program ifs_edit; const {$I gemconst.pas} type arr115 = array[0..11,0..5] of real; matrix = array[0..2, 0..2] of real; {$I gemtype.pas} arr511 = array[0..5,0..11] of str255; var ifscodes,pntcodes : arr115; ifsp : array[0..11] of real; s_d,s_k : arr511; ifsmax,pntmax, xscale,yscale, xoffset,yoffset, window,ymax,ytop, rec,iter,dummy : integer; menu : menu_ptr; menu_da,w_closed, logo_da,ende_da, res : boolean; titel : window_title; txt : str255; {$I gemsubs.pas} function get_res:integer; xbios(4); function random:real; function randy:char; xbios(17); begin random:=abs(ord(randy)/32777) end; procedure str(z:real;format:integer;var st:str255); var i,le : integer; zi,j : long_integer; vz : string[1]; begin if format=0 then begin z:=z*1000; if z<0 then vz:='-' else vz:='+' end else vz:=''; zi:=trunc(abs(z)); j:=1; le:=0; repeat le:=le+1; j:=j*10; until j>zi; st:=''; for i:=1 to le do begin j:=j div 10; st:=concat(st,chr(48+ zi div j)); if j>0 then zi:=zi-zi div j * j end; if format=0 then begin while length(st)<4 do st:=concat('0',st); format:=6 end; while length(st)0 then for i:=1 to expo do h:=h*10 else if expo<0 then for i:=-1 downto expo do h:=h/10; pot10:=h end; begin faktor:=1; if st[1]='-' then begin faktor:=-1; delete(st,1,1) end; if st[1]='+' then delete(st,1,1); while pos(' ',st)>0 do delete(st,pos(' ',st),1); komma:=pos('.',st); if komma<1 then komma:=length(st)+1; if komma=1 then begin komma:=2; st:=concat('0',st) end; zahl:=0; for i:=1 to komma-1 do zahl:=zahl+pot10(komma-i-1)*(ord(st[i])-48); if komma 1 then for i:=0 to (ifsmax div 6)-2 do if abs(p[i]-p[i+1])>0.01 then calcprob:=false end; procedure tab(ifs:boolean;var codes:arr115;var s:arr511;var max:integer); var dia : dialog_ptr; s_h,s_no,s_tit,s_tab : str255; s1,s2,s3 : string[3]; i_nr : array[0..11] of integer; i_d : array[0..5,0..11] of integer; i_txt,i_box,i_kopf, ok_btn,cancel_btn, button,i,j : integer; sum : real; begin fenster_zu; if ifs then begin s_no:=' 1 2 3 4 5 6 7 8 9101112'; s_tit:='Eingabe der IFS-Koeffizienten'; s_tab:='T_ ___a____ ___b____ ___c____ ___d____ ___e____ ___f____' end else begin s_no:=' 0 1 2 3 4 5 6 7 8 91011'; s_tit:=' Eingabe der Punkte-Trippel'; s_tab:='Nr. ___X1___ ___Y1___ ___X2___ ___Y2___ ___X3___ ___Y3___' end; dia:=new_dialog(90, 0,0,66,20); i_box:=add_ditem(dia,g_box,none,1,2,64,15, 2,$1180); i_kopf:=add_ditem(dia,g_string,none,19,1,0,0,0,0); set_dtext(dia,i_kopf,s_tit,system_font,TE_Left); i_txt:=add_ditem(dia,g_string,none,2,3,0,0,0,0); set_dtext(dia,i_txt,s_tab,system_font,TE_left); for j:=0 to 11 do begin i_nr[j]:=add_ditem(dia,g_string,none,2,4+j,2,1,0,0); s_h:=copy(s_no,1+j*2,2); set_dtext(dia,i_nr[j],s_h,system_font,te_left); end; for j:=0 to 11 do for i:=0 to 5 do begin i_d[i,j]:=add_ditem(dia,G_Ftext,none,6+i*10,4+j,8,1,0,$1180); set_dedit(dia,i_d[i,j],'____.___','X999999',s[i,j], system_font,Te_center) end; ok_btn:=add_ditem(dia,G_Button,Selectable|Exit_Btn|Default, 2,18,30,1,2,$1180); cancel_btn:=add_ditem(dia,G_button,selectable|Exit_btn, 33,18,30,1,2,$1180); set_dtext(dia,ok_btn,'Okay',system_font,Te_center); set_dtext(dia,cancel_btn,'Abbruch',system_font,Te_center); center_dialog(dia); button:=do_dialog(dia,i_d[0,0]); end_dialog(dia); delete_dialog(dia); if button=ok_btn then begin max:=-1; for j:=0 to 11 do begin sum:=0; for i:=0 to 5 do begin get_dedit(dia,i_d[i,j],s[i,j]); s3:='+'; if s[i,j][1]='-' then s3:='-'; delete(s[i,j],1,1); if length(s[i,j])=0 then s[i,j]:=' 0000'; if length(s[i,j])=1 then s[i,j]:=concat(' ',s[i,j]); if length(s[i,j])=2 then s[i,j]:=concat(' ',s[i,j]); while length(s[i,j])<6 do s[i,j]:=concat(s[i,j],' '); if s[i,j][2]=' ' then begin delete(s[i,j],2,1); s[i,j]:=concat(' ',s[i,j]) end; if s[i,j][3]=' ' then begin delete(s[i,j],3,1); s[i,j]:=concat(' ',s[i,j]) end; s1:=copy(s[i,j],1,3); s2:=copy(s[i,j],4,3); codes[j,i]:=val(concat(s3,s1,'.',s2)); sum:=sum+abs(codes[j,i]); s[i,j]:=concat(s3,s[i,j]) end; if (sum=0) and (max=-1) then max:=j*6 end end end; procedure editifs; begin tab(true,ifscodes,s_d,ifsmax); end; procedure editpnt; begin tab(false,pntcodes,s_k,pntmax); end; function det(m:matrix):real; begin det:= m[0,0] * m[1,1] * m[2,2] + m[0,1] * m[1,2] * m[2,0] + m[0,2] * m[1,0] * m[2,1] - m[2,0] * m[1,1] * m[0,2] - m[2,1] * m[1,2] * m[0,0] - m[2,2] * m[1,0] * m[0,1] end; procedure setmat(var m:matrix); var i : integer; begin for i:=0 to 2 do begin m[0,i]:=pntcodes[0,i*2]; m[1,i]:=pntcodes[0,i*2+1]; m[2,i]:=1 end end; function solve(t,c,xy:integer;d:real):real; var m : matrix; i : integer; begin setmat(m); for i:=0 to 2 do m[c,i]:=pntcodes[t+1,i*2+xy]; solve:=det(m)/d end; procedure transform; var c,t : integer; d : real; m : matrix; begin setmat(m); d:=det(m); ifsmax:=pntmax-6; for t:=0 to (ifsmax div 6) do begin ifscodes[t,0]:=solve(t,0,0,d); str(ifscodes[t,0],0,s_d[0,t]); ifscodes[t,1]:=solve(t,1,0,d); str(ifscodes[t,1],0,s_d[1,t]); ifscodes[t,2]:=solve(t,0,1,d); str(ifscodes[t,2],0,s_d[2,t]); ifscodes[t,3]:=solve(t,1,1,d); str(ifscodes[t,3],0,s_d[3,t]); ifscodes[t,4]:=solve(t,2,0,d); str(ifscodes[t,4],0,s_d[4,t]); ifscodes[t,5]:=solve(t,2,1,d); str(ifscodes[t,5],0,s_d[5,t]) end end; procedure iterate(var x,y:real); var rnd, newx,newy : real; i : integer; begin rnd:=random; i:=-1; repeat i:=i+1; until rnd0 then begin for j:=0 to ifsmax div 6 do begin newx:= ifscodes[j,0]*x + ifscodes[j,1]*y + ifscodes[j,4]; newy:= ifscodes[j,2]*x + ifscodes[j,3]*y + ifscodes[j,5]; plot(trunc(newx*xscale+xoffset),ymax-trunc(newy*yscale+yoffset)); recurs(i-1,newx,newy) end end end; procedure recdraw; var i,dummy, i_rek,ok_btn,ext_btn : integer; x,y : real; dia : dialog_ptr; s_rek : str255; begin x:=0; y:=0; dia:=new_dialog(4,0,0,25,5); i_rek:=add_ditem(dia,G_Ftext,none,6,1,16,1, 0,$1180); ok_btn:=add_ditem(dia,G_Button,Selectable|Exit_Btn|Default, 2,3,10,1, 2,$1180); ext_btn:=add_ditem(dia,G_Button,Selectable|Exit_btn, 13,3,10,1,2,$1180); str(rec,2,s_rek); set_dedit(dia,i_rek,'Rekursionen: __','99',s_rek,system_font,TE_Left); set_dtext(dia,ok_btn,'Okay ',System_font,TE_Center); set_dtext(dia,ext_btn,'Abbruch',System_font,TE_Center); center_dialog(dia); if (do_dialog(dia,i_rek)=ok_btn) then begin get_dedit(dia,i_rek,s_rek); if s_rek<>'' then rec:=trunc(val(s_rek)) end; end_dialog(dia); delete_dialog(dia); clear_window; for i:=0 to 20 do iterate(x,y); hide_mouse; recurs(rec,x,y); show_mouse; end; procedure drawifs; var dia : dialog_ptr; s_xos,s_yos,s_xsc,s_ysc : str255; i_xos,i_yos,i_xsc,i_ysc , button,rek_btn,ite_btn , i_txt,i_box : integer; begin fenster_zu; dia:=new_dialog(9,0,0,30,11); i_txt:=add_ditem(dia,G_string,none,7,1,24,1,0,0); set_dtext(dia,i_txt,'Zeichenparameter',System_font,Te_left); i_box:=add_ditem(dia,G_Ibox, none,2,3,26,4, 1,$1180); i_xos:=add_ditem(dia,G_ftext,none,3,4,12,1, 0,$1180); i_yos:=add_ditem(dia,G_ftext,none,3,5,12,1, 0,$1180); i_xsc:=add_ditem(dia,G_ftext,none,16,4,12,1,0,$1180); i_ysc:=add_ditem(dia,G_ftext,none,16,5,12,1,0,$1180); rek_btn:=add_ditem(dia,G_Button,Selectable|Exit_btn|Outlined, 4,8,10,2, 2,$1180); ite_btn:=add_ditem(dia,G_button,Selectable|Exit_btn|Outlined, 16,8,10,2, 2,$1180); str(xoffset,3,s_xos); str(yoffset,3,s_yos); str(xscale,3,s_xsc); str(yscale,3,s_ysc); set_dedit(dia,i_xos,'x-Offset:___','999',s_xos,System_font,Te_left); set_dedit(dia,i_yos,'y-Offset:___','999',s_yos,System_font,Te_left); set_dedit(dia,i_xsc,'x-Scale:___' ,'999',s_xsc,System_font,Te_left); set_dedit(dia,i_ysc,'y-Scale:___' ,'999',s_ysc,System_font,Te_left); set_dtext(dia,rek_btn,'rekursiv',System_font,Te_center); set_dtext(dia,ite_btn,'iterativ',System_font,Te_center); obj_setstate(dia,i_box,Shadowed,false); center_dialog(dia); if calcprob then obj_setstate(dia,rek_btn,Normal,false) else obj_setstate(dia,rek_btn,Disabled,false); button:=do_dialog(dia,i_xos); get_dedit(dia,i_xos,s_xos); xoffset:=trunc(val(s_xos)); get_dedit(dia,i_yos,s_yos); yoffset:=trunc(val(s_yos)); get_dedit(dia,i_xsc,s_xsc); xscale :=trunc(val(s_xsc)); get_dedit(dia,i_ysc,s_ysc); yscale :=trunc(val(s_ysc)); obj_setstate(dia,button,0,true); end_dialog(dia); delete_dialog(dia); if res then paint_color(red) else paint_color(black); if button=ite_btn then iterdraw else recdraw; set_clip(0,0,719,ymax) end; procedure def_frak(welchen:integer); begin case welchen of 1: begin titel:=' Die Sierspinsky-Pfeilspitze '; xoffset:=20; yoffset:=25; xscale:=300; yscale:=320; iter:=7500; rec:=7; s_d[0,0]:='+ 0500'; s_d[3,0]:=s_d[0,0]; s_d[0,1]:=s_d[0,0]; s_d[3,1]:=s_d[0,0]; s_d[0,2]:=s_d[0,0]; s_d[3,2]:=s_d[0,0]; s_d[4,2]:=s_d[0,0]; s_d[5,2]:=s_d[0,0]; s_d[4,1]:='+ 1000' end; 2: begin titel:=' Die Drachenflche '; xoffset:=470; yoffset:=115; xscale:=320; yscale:=135; iter:=9000; rec:=10; s_d[0,0]:='+ 0500'; s_d[2,0]:=s_d[0,0]; s_d[3,0]:=s_d[0,0]; s_d[0,1]:=s_d[0,0]; s_d[2,1]:=s_d[0,0]; s_d[3,1]:=s_d[0,0]; s_d[1,0]:='- 0500'; s_d[1,1]:=s_d[1,0]; s_d[5,1]:='+ 1000' end; 3: begin titel:=' Eine Schneeflocke '; xoffset:=35; yoffset:=100; xscale:=95; yscale:=80; iter:=9000; rec:=5; s_d[0,0]:='+ 0333'; s_d[3,0]:=s_d[0,0]; s_d[0,1]:=s_d[0,0]; s_d[3,1]:=s_d[0,0]; s_d[0,4]:=s_d[0,0]; s_d[3,4]:=s_d[0,0]; s_d[0,5]:='- 0333'; s_d[3,5]:=s_d[0,5]; s_d[0,2]:='+ 0167'; s_d[2,2]:=s_d[0,2]; s_d[3,2]:=s_d[0,2]; s_d[0,3]:=s_d[0,2]; s_d[3,3]:=s_d[0,2]; s_d[2,3]:='- 0167'; s_d[1,2]:='- 0500'; s_d[1,3]:='+ 0500'; s_d[4,2]:='+ 1000'; s_d[5,2]:=s_d[4,2]; s_d[4,4]:='+ 2000'; s_d[5,4]:=s_d[4,4]; s_d[5,3]:=s_d[4,4]; s_d[4,1]:='+ 4000'; s_d[4,3]:=s_d[4,1]; s_d[4,5]:=s_d[4,1] end; 4: begin titel:=' Das Farnblatt '; xoffset:=270; yoffset:=15; xscale:=100; yscale:=31; iter:=9000; s_d[3,0]:='+ 0160'; s_d[0,1]:='+ 0200'; s_d[1,1]:='- 0260'; s_d[2,1]:='+ 0230'; s_d[3,1]:='+ 0220'; s_d[5,1]:='+ 1600'; s_d[5,3]:=s_d[5,1]; s_d[0,2]:='- 0150'; s_d[1,2]:='+ 0280'; s_d[2,2]:='+ 0260'; s_d[3,2]:='+ 0240'; s_d[5,2]:='+ 0440'; s_d[0,3]:='+ 0850'; s_d[3,3]:=s_d[0,3]; s_d[1,3]:='+ 0040'; s_d[2,3]:='- 0040' end; 5: begin titel:=' Die Spirale '; xoffset:=0; yoffset:=0; xscale:=55; yscale:=30; iter:=7500; s_d[0,0]:='+ 0779'; s_d[1,0]:='- 0294'; s_d[1,1]:=s_d[1,0]; s_d[2,0]:='+ 0257'; s_d[3,0]:='+ 0824'; s_d[4,0]:='+ 3148'; s_d[5,0]:='+ 0342'; s_d[0,1]:='- 0273'; s_d[2,1]:='+ 0079'; s_d[3,1]:='- 0235'; s_d[4,1]:='+ 11716'; s_d[5,1]:='+ 2599' end end; if res then begin yoffset:=yoffset div 2; yscale:=yscale div 2 end; set_wname(window,titel); editifs end; procedure loeschen; var i,j : integer; begin for j:=0 to 11 do for i:=0 to 5 do begin s_d[i,j]:='+ 0000'; ifscodes[j,i]:=0 end; ifsmax:=0; iter:=5000; rec:=5; xoffset:=350; yoffset:=180; xscale :=100; yscale :=100; if res then begin yoffset:=90; yscale:=50 end; titel:=''; set_wname(window,titel); fenster_zu end; procedure about_logo; var dia : dialog_ptr; i,dummy, i_btn,i_box,i_tit : integer; ibla : array[1..4] of integer; sbla : array[1..4] of str255; begin fenster_zu; sbla[1]:=' Ein Public Domain Programm von '; sbla[2]:='Rainer Urian und Michael Herrmann'; sbla[3]:='Mit freundlicher Genehmigung des '; sbla[4]:=' Heinz Heise Verlages, Hannover '; dia:=new_dialog(8,0,0,41,12); i_box:=add_ditem(dia,g_ibox,none, 2,1,37,2, 1,$1180); i_tit:=add_ditem(dia,G_String,None,6,2,0,0, 0,0); Set_DText(dia,i_tit,'I F S - E d i t o r V 1 . 0',System_Font,TE_Left); for i:=1 to 4 do begin ibla[i]:=add_ditem(dia,G_string,none,4,4+i,0,0, 2,$1180); set_dtext(dia,ibla[i],sbla[i],system_font,Te_left) end; i_btn:=Add_DItem(dia,G_Button,Selectable|Exit_Btn|Default|Touch_exit, 29,10,9,1, 2,$1180); Set_DText(dia,i_btn,'soso...',System_Font,TE_Center); Center_Dialog(dia); dummy:=do_dialog(dia,0); end_dialog(dia); delete_dialog(dia) end; procedure menue; var event,junk,item,i,j, i_abo,i_inkoo,i_inifs, i_graf,i_ende,i_loesh, i_f1,i_f2,i_f3,i_f4,i_f5, i_tit4,i_tit1,i_tit2,i_tit3 : integer; msg : message_buffer; begin for i:=0 to 5 do for j:=0 to 11 do s_k[i,j]:='+ 0000'; repeat set_mouse(m_point_hand); if not menu_da then begin menu:=new_menu( 13,' ber "IFS-Editor" '); i_tit1:=add_mtitle(menu,' Eingabe '); i_tit2:=add_mtitle(menu,' Grafik '); i_tit3:=add_mtitle(menu,' Fraktale '); i_tit4:=add_mtitle(menu,' Ende '); i_inkoo:=add_mitem(menu,i_tit1,' Koordinaten '); i_inifs:=add_mitem(menu,i_tit1,' IFS-Daten '); i_loesh:=add_mitem(menu,i_tit1,' Reset '); i_graf :=add_mitem(menu,i_tit2,' IFS zeichnen '); i_f1 :=add_mitem(menu,i_tit3,' Pfeilspitze '); i_f2 :=add_mitem(menu,i_tit3,' Drachenflche '); i_f3 :=add_mitem(menu,i_tit3,' Schneeflocke '); i_f4 :=add_mitem(menu,i_tit3,' Farnblatt '); i_f5 :=add_mitem(menu,i_tit3,' Spirale '); i_ende :=add_mitem(menu,i_tit4,' Programm beenden '); menu_da:=true; end; msg[0]:=0; if ifsmax=0 then begin menu_disable(menu,i_graf); for i:=i_f1 to i_f5 do menu_check(menu,i,false); end else menu_enable(menu,i_graf); draw_menu(menu); if res then text_color(red) else text_color(black); text_style(17); draw_string(425,ytop,'I F S - E d i t o r'); event:=get_event( E_Message, 0, 0, 0, 0, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, junk, junk, junk, junk, junk, junk); erase_menu(menu); item:=msg[4]; if (event=E_message) then begin if msg[3]=i_tit3 then begin for i:=i_f1 to i_f5 do menu_check(menu,i,false); menu_check(menu,item,true); loeschen; def_frak(item-i_f1+1) end else if (item<12) and (item>5) then about_logo else if item=i_inkoo then begin editpnt; transform; editifs; end else if item=i_inifs then editifs else if item=i_loesh then loeschen else if item=i_graf then drawifs else if item=i_ende then ende_da:=(do_alert( '[2][Soll der Editor|wirklich beendet|werden ?][ Ja |Nein]',2)=1); menu_normal(menu,msg[3]); end; until ende_da end; begin dummy:=get_res; if dummy=2 then begin res:=false; ymax:=399; ytop:=14 end else begin res:=true; ymax:=199; ytop:=7 end; txt:=concat('[1][ |Der "IFS-Editor" luft|', 'nur in mittlerer oder|hoher Auflsung !][ Achso ! ]'); if dummy=0 then dummy:=do_alert(txt,1) else begin ifsmax:=-1; pntmax:=-1; menu_da:=false; ende_da:=false; logo_da:=false; if init_gem >=0 then begin set_color(3,333,444,777); draw_string(20,ytop, ' '); set_mouse(m_point_hand); titel:=''; window:=new_window(G_Name,titel,0,0,0,0); w_closed:=true; loeschen; menue; if not w_closed then close_window(window); delete_window(window); erase_menu(menu); end; exit_gem end end. ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 RH Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (zomer 1988) al zo'n drie honderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De Stichting ST geeft ook een speciale PD catalogus disk uit. ************** Deze public domain disk is geproduceerd en gedistribueerd door: Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productie fouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productie nummer. ************************************************************************