Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

 Wolken sind keine Kugeln, Berge keine Kegel, Küstenlinien keine Kreise. Die Baumrinde ist nicht glatt.  Definition: Eine Figur wird selbstähnlich genannt,

Ähnliche Präsentationen


Präsentation zum Thema: " Wolken sind keine Kugeln, Berge keine Kegel, Küstenlinien keine Kreise. Die Baumrinde ist nicht glatt.  Definition: Eine Figur wird selbstähnlich genannt,"—  Präsentation transkript:

1  Wolken sind keine Kugeln, Berge keine Kegel, Küstenlinien keine Kreise. Die Baumrinde ist nicht glatt.  Definition: Eine Figur wird selbstähnlich genannt, wenn Teile der Figur kleine Kopien der ganzen Figur sind. Definition Fraktale

2  Wie lang ist die Küste Englands (Norwegens)?  Was sagt diese Zei- tungsmeldung aus?  Finde heraus, wie lang die beiden Küstenlinien sind.  Finde heraus, wie lang die gemeinsame Grenze zwischen Spanien und Portugal ist. 1.Englands Küste Fraktale

3 1.Englands Küste

4 Die Koch-Kurve erhält man, indem man, ausgehend von einer Strecke, das mittlere Drittel dieser Strecke entfernt und es durch zwei Schenkel eines gleichseitigen Dreiecks ersetzt. Mit den entstehenden Teilstrecken wird dieser Vor- gang unendlich oft wiederholt. Fraktale 1. Die Kochsche Kurve

5 Die Iteration besteht nun darin, 1. dass alle Linienstücke der Kurve in drei gleichlange Stücke unterteilt werden 2. auf dem jeweils mittleren Stück ein gleichseitiges Dreieck errichtet wird und 3. die Basis dieses Dreiecks (also das ursprüngliche Drittelstück) entfernt wird. Fraktale 1. Die Kochsche Kurve

6 Mit Hilfe der Turtle- Grafik von LOGO lässt sich die Koch-Kurve einfach rekursiv programmieren. Vorwärts – Links 60 – Vorwärts – Rechts 60 – Rechts 60 – Vorwärts – Links 60 – Vorwärts Diese Befehle werden rekursiv aufgerufen. to koch :stufe : laenge Ifelse :stufe<0 [setpc 1+random 7 fd :laenge][~ koch :stufe-1 :laenge/3 lt 60 koch :stufe-1 :laenge/3 rt 60 rt 60 koch :stufe-1 :laenge/3 lt 60 koch :stufe-1 :laenge/3] end 1. Die Kochsche Kurve Fraktale

7 Mit Hilfe der Turtle- Grafik von LOGO läßt sich die Koch-Kurve einfach rekursiv programmieren. Vorwärts – Links 60 – Vorwärts – Rechts 60 – Rechts 60 – Vorwärts – Links 60 – Vorwärts Diese Befehle werden rekursiv aufgerufen. Jetzt ohne IFELSE to koch :stufe :laenge If :stufe<0 [fd :laenge stop] koch :stufe-1 :laenge/3 lt 60 koch :stufe-1 :laenge/3 rt 60 rt 60 koch :stufe-1 :laenge/3 lt 60 koch :stufe-1 :laenge/3 end 1.2 Die Kochsche Kurve ohne IFELSE Fraktale Aufruf(Beispiel) : koch 3 500

8 Mit Hilfe der Turtle- Grafik von LOGO lässt sich die Koch-Kurve einfach rekursiv programmieren. Vorwärts – Links 60 – Vorwärts – Rechts 60 – Rechts 60 – Vorwärts – Links 60 – Vorwärts Diese Befehle werden rekursiv aufgerufen. Jetzt ohne IFELSE to koch :laenge if :laenge<0 [fd :laenge stop] koch :laenge/3 lt 60 koch :laenge/3 rt 60 rt 60 koch :laenge/3 lt 60 koch :laenge/3 end 1.3 Die Kochsche Kurve ohne IFELSE – Abbruch- bedingung über die Länge Fraktale

9 Die Entstehung der Kochschen Kurve kann mit Hilfe von gifsave als Animation dargestellt werden. (Abbruch über die Länge) to koch :laenge if :laenge<10 [ fd :laenge (gifsave "koch.gif 0 :append 0) make "append "true stop] koch :laenge/3 lt 60 koch :laenge/3 rt 60 rt 60 koch :laenge/3 lt 60 koch :laenge/3 end 1.4 Die Kochsche Kurve Animation mit Gifsave Fraktale to main cs setpensize[4 4] rt 90 pu bk 400 pd setactivearea[ ] make "append "false koch 800 end

10 Die Entstehung der Kochschen Kurve kann mit Hilfe von gifsave als Animation dargestellt werden. 1.5 Die Kochsche Kurve Animation mit Gifsave Fraktale

11 Die Abbruchbedingung für die Fraktale kann einmal über die Länge der Strecken gesteuert werden, zum anderen ist es möglich, dafür die Iterationsstufe zu nehmen. Weiterhin sollen noch zwei anderen Versionen hinzugefügt werden. Die Strecken können mit Hilfe der random-Funktion und dem Befehl setpc unterschiedlich gefärbt werden und es ist möglich mit Hilfe von gifsave die Fraktale zu animieren. Diese Möglichkeiten sollen im Folgenden exemplarisch für alle möglichen fraktalen Kurven dargestellt werden. Die verschiedenen Versionen der fraktalen Kurven 1. Steuerung über die Länge der Strecke to Fraktal :laenge if :laenge<50 [fd :laenge stop] Fraktal :laenge/3 … die rekursiven Aufrufe ….. end Fraktale Der Aufruf: Fraktal 600 ergibt die Darstellung der fraktalen Kurve bis die Länge weniger als 50 Pixel hat.

12 Die verschiedenen Versionen der fraktalen Kurven 2. Steuerung über die Iterationsstufe to Fraktal :stufe :laenge if :stufe<1 [fd :laenge stop] Fraktal :stufe-1 :laenge/3 … die rekursiven Aufrufe ….. end Fraktale Der Aufruf: Fraktal ergibt die Darstellung von 2 Iterationsstufen

13 Die verschiedenen Versionen der fraktalen Kurven 3. Steuerung über die Iterationsstufe und unterschiedliche Farben der einzelnen Strecken to Fraktal :stufe :laenge if :stufe<1 [setpc 1+random 7 fd :laenge stop] Fraktal :stufe-1 :laenge/3 … die rekursiven Aufrufe ….. end Fraktale Der Aufruf: Fraktal ergibt die Darstellung von 2 Iterationsstufen mit unterschiedlichen Farben (hier sind es 8 Farben)

14 Die verschiedenen Versionen der fraktalen Kurven 4. Steuerung über die Iterationsstufe und Animation der fraktalen Kurve (mit einer Farbe) to Fraktal :stufe :laenge if :stufe<1 [fd :laenge (gifsave „Fraktal.gif 0 :append 0) make "append "true stop] Fraktal :stufe-1 :laenge/3 … die rekursiven Aufrufe ….. end Fraktale Der Aufruf: Fraktal ergibt eine Animation über 5 Iterationsstufen. Im main-Pro- gramm müssen 2 Zeilen einge- fügt werden (Zeile 4 und 5) (1) to main (2) cs setpensize[4 4] (3) rt 90 pu bk 400 pd (4) setactivearea[ ] (5) make "append "false (6) Fraktal (7) end

15 Die verschiedenen Versionen der fraktalen Kurven 5. Steuerung über die Länge und Animation der fraktalen Kurve (mit einer Farbe) to Fraktal :laenge if :laenge<10 [fd :laenge (gifsave „Fraktal.gif 0 :append 0) make "append "true stop] Fraktal :laenge/3 … die rekursiven Aufrufe ….. end Fraktale Der Aufruf: Fraktal ergibt eine Animation über 5 Iterationsstufen. Im main-Pro- gramm müssen 2 Zeilen einge- fügt werden (Zeile 4 und 5) (1) to main (2) cs setpensize[4 4] (3) rt 90 pu bk 400 pd (4) setactivearea[ ] (5) make "append "false (6) Fraktal 600 (7) end

16 Die Kreuzstichkurve stammt von T. Vicsek (Ungarn). Sie hat den nebenstehenden Generator und kann deshalb als koch- ähnlich angesehen werden. Bei der Drittelung ergeben sich hier 5 neue Teilstrecken Fraktale 2. Die Kreuzstich Kurve T. Vicsek

17 to kreuz :stufe :laenge if :stufe<1[setpc 1+random 7 fd :laenge] kreuz :stufe-1 :laenge/3 lt 90 kreuz :stufe-1 :laenge/3 rt 90 kreuz :stufe-1 :laenge/3 lt 90 kreuz :stufe-1 :laenge/3 end Fraktale 2.1 Die Kreuzstich Kurve – Steuerung über die Iterationsstufe

18 to kreuz :laenge if :laenge<10[fd :laenge stop] kreuz :laenge/3 lt 90 kreuz :laenge/3 rt 90 kreuz :laenge/3 lt 90 kreuz :laenge/3 end Fraktale 2.2 Die Kreuzstich Kurve - Steuerung über die Länge

19 to kreuz :laenge if :laenge<10 [fd :laenge (gifsave „Fraktal.gif 0 :append 0) make "append "true stop] kreuz :laenge/3 lt 90 kreuz :laenge/3 rt 90 kreuz :laenge/3 lt 90 kreuz :laenge/3 end Fraktale 2.3 Die Kreuzstich Kurve - Animaton mit GifSave to main cs setpensize[4 4] rt 90 pu bk 400 pd setactivearea[ ] make "append "false kreuz 800 end

20 to koch1 :laenge if :laenge<100[fd :laenge stop] koch1 :laenge/4 rt 60 koch1 :laenge/4 lt 60 lt 60 koch1 :laenge/4 koch1 :laenge/4 rt 60 rt 60 koch1 :laenge/4 lt 60 koch1 :laenge/4 end Fraktale 3.1 Kochähnliche Kurve – Steuerung über die Kurvenlänge Ausgangselement ist wieder eine Strecke, die dieses Mal in 4 gleiche Teile geteilt wird. Die beiden Dreiecke sind gleichseitig. Dargestellt ist der 1. Iterationsschritt. Man erkennt 6 Teilstücke – also auch 6 rekursive Aufrufe.

21 to koch1Stufe :stufe :laenge if :stufe<1[FD :laenge stop] koch1Stufe :stufe-1 :laenge/4 rt 60 koch1Stufe :stufe-1 :laenge/4 lt 60 lt 60 koch1Stufe :stufe-1 :laenge/4 koch1Stufe :stufe-1 :laenge/4 rt 60 rt 60 koch1Stufe :stufe-1 :laenge/4 lt 60 koch1Stufe :stufe-1 :laenge/4 end Fraktale 3.2 Kochähnliche Kurve- Steuerung über Iterationsstufe Iterationsstufe 3

22 to zwillingStufe :stufe :laenge if :stufe<1[ FD :laenge stop] lt 45 zwillingStufe :stufe-1 :laenge* rt 90 zwillingStufe :stufe-1 :laenge* lt 90 zwillingStufe :stufe-1 :laenge* rt 45 end Fraktale 4.1 Kochähnliche Kurve- die Zwillingskurve - Steuerung über die Iterationsstufe Ausgangselement - Iterationsstufe 1

23 to zwilling :laenge if :laenge<80[ FD :laenge stop] lt 45 zwilling :laenge* rt 90 zwilling :laenge* lt 90 zwilling :laenge* rt 45 end Fraktale 4.2 Kochähnliche Kurve- die Zwillingskurve - Steuerung über die Länge Iterationsstufe 4

24 to peano :stufe :laenge Ifelse :stufe<1[setpc 1+random 7 FD :laenge][peano :stufe-1 :laenge/3 LT 90 peano :stufe-1 :laenge/3 RT 90 peano :stufe-1 :laenge/3 LT 90 peano :stufe-1 :laenge/3 RT 90 peano :stufe-1 :laenge/3] end Fraktale 5.1 Die Peano - Kurve – Ifelse – Abbruch über die Iterationsstufe

25 to peano :stufe :laenge If :stufe<1[FD :laenge stop] peano :stufe-1 :laenge/3 LT 90 peano :stufe-1 :laenge/3 RT 90 peano :stufe-1 :laenge/3 LT 90 peano :stufe-1 :laenge/3 RT 90 peano :stufe-1 :laenge/3 end Fraktale 5.2 Die Peano-Kurve - Abbruch über die Iterationsstufe – mit If

26 to peanoGif :stufe :laenge If :stufe<1[setpc 1+random 7 FD :laenge (gifsave "Peano.gif 0 :append 0) make "append "true stop] peanoGif :stufe-1 :laenge/3 LT 90 peanoGif :stufe-1 :laenge/3 RT 90 peanoGif :stufe-1 :laenge/3 LT 90 peanoGif :stufe-1 :laenge/3 RT 90 peanoGif :stufe-1 :laenge/3 end Fraktale 5.2 Die Peano-Kurve - Animation – Abbruch über die Iterationsstufe to main cs setpensize[4 4] rt 90 pu bk 400 pd setactivearea[ ] make "append "false peanoGif end

27 Fraktale 5.3 Die Peano-Kurve - Animation – Abbruch über die Iterationsstufe Iterationsstufe 1

28 Fraktale 5.4 Die Peano-Kurve - Animation – Abbruch über die Iterationsstufe Iterationsstufe 2

29 Fraktale 5.5 Die Peano Kurve

30 Fraktale 5.6 Die Peano Kurve Peano

31 to dragon :level :turn :size if :level<1 [setpc 1+random 7 fd :size stop] dragon :level-1 90 :size rt : turn dragon :level :size end Fraktale 6.1 Die Drachenkurve

32 to Kochinsel :stufe :laenge If :stufe<0 [ FD :laenge stop] kochinsel :stufe-1 :laenge/4 LT 90 kochinsel :stufe-1 :laenge/4 RT 90 kochinsel :stufe-1 :laenge/4 kochinsel :stufe-1 :laenge/4 LT 90 kochinsel :stufe-1 :laenge/4 RT 90 kochinsel :stufe-1 :laenge/4 end Fraktale 7.1 Die Kochinsel Kurve

33 Fraktale 7.2 Die Kochinsel

34 Fraktale 7.2 Die Kochinsel Nimmt man jetzt als erstes Element ein Quadrat und wendet auf jede der 4 Seiten den rekursiven Algorithmus an, so erhält man ähnlich wie bei der Kochschen Schneeflocke eine geschlossene Kurve. to KochInsel :laenge :stufe repeat 4[KochIsland :laenge :stufe rt 90] end to KochIsland :laenge :stufe If :stufe<0 [fd :laenge stop] KochIsland :laenge/4 :stufe-1 Lt 90 KochIsland :laenge/4 :stufe-1 Rt 90 KochIsland :laenge/4 :stufe-1 KochIsland :laenge/4 :stufe-1 Lt 90 KochIsland :laenge/4 :stufe-1 Rt 90 KochIsland :laenge/4 :stufe-1 end to main cs setpensize[2 2] home pu bk 100 rt 90 bk 200 lt 90 pd KochInsel end

35 Fraktale Stufe 1Stufe 2 Stufe Die Kochinsel

36 Fraktale Mathematische Betrachtungen StufeAnzahl der Segmente Länge eines SegmentsUmfangFläche 141 s4 sA 232¼ s8 sA 32561/16 s16 sA n(8) n /2(1/4) n-1 *s A 7.2 Die Kochinsel Ergebnis: Die Länge der Kurve ist unendlich, die eingeschlossene Fläche ist endlich und ändert sich nicht.

37 Fraktale 8.1 Der Sierpinski- Teppich Das Ausgangselement ist wieder eine Strecke beliebiger Länge. Diese wird jetzt in drei gleiche Teile geteilt und, wie in der 1. Iterationsstufe gezeigt, im Sinne der Zahlenwerte durchlaufen. Dabei werden die Strecken 2, 3 und 4 zweimal gezeichnet.

38 Fraktale 8.2 Der Sierpinski- Teppich to SierpinskiTeppich :stufe :laenge if :stufe<1[wait 0 fd :laenge stop] SierpinskiTeppich :stufe-1 :laenge/3 lt 90 SierpinskiTeppich :stufe-1 :laenge/3 rt 90 SierpinskiTeppich :stufe-1 :laenge/3 SierpinskiTeppich :stufe-1 :laenge/3 rt 90 SierpinskiTeppich :stufe-1 :laenge/3 SierpinskiTeppich :stufe-1 :laenge/3 rt 90 SierpinskiTeppich :stufe-1 :laenge/3 lt 90 SierpinskiTeppich :stufe-1 :laenge/3 end to main cs setpensize[5 5] setpc[ ] rt 45 SierpinskiTeppich end

39 Fraktale 8.3 Der Sierpinski- Teppich

40 Fraktale 8.4 Der Sierpinski- Teppich Mathematische Betrachtungen StufeSeitenlängeUmfangTotale Fläche Gelöschte Fläche 1S4sA0 2(1/3)*s4s+(4/3)s=5.33s(8/9)*A(1/9)*A 3(1/9)*s4s+(4/3)s+8*(4/9)s =8.89s (8/9) 2 *AA*[(1/9)+(8/81)] 4(1/3) n-1 *s4s[1+(1/3)+8*(1/9)+8 2 *(1/27)+..+8 n-2 * (1/3) n-1 ] (8/9) n-1 *AA[(1/9)+8(1/9) (1/9) n-2 (1/9) n-1 ]

41 Fraktale 9.1 Das sog. Kreuz- Fraktal Ausgehend von einem Quadrat werden auf jeder der Quadratseiten Kreuze entsprechend der Abbildung errichtet.

42

43 Fraktale 9.2 Das sog. Kreuz- Fraktal to KreuzFraktal :stufe :laenge if :stufe<1[setpc 1+random 7 fd :laenge stop] KreuzFraktal :stufe-1 :laenge/3 lt 90 KreuzFraktal :stufe-1 :laenge/3 rt 90 KreuzFraktal :stufe-1 :laenge/3 lt 90 KreuzFraktal :stufe-1 :laenge/3 rt 90 KreuzFraktal :stufe-1 :laenge/3 lt 90 KreuzFraktal :stufe-1 :laenge/3 rt 90 KreuzFraktal :stufe-1 :laenge/3 lt 90 KreuzFraktal :stufe-1 :laenge/3 end to main cs setpensize[5 5] setfc[ ]fill repeat 4[ KreuzFraktal right 90] end

44 Fraktale 9.3 Das sog. Kreuz- Fraktal Stufe 1 Stufe 2 Stufe 3

45 Fraktale 10.1 Das H-Fraktal to HFraktal :stufe :laenge if :stufe<1[ stop] fd :laenge lt 90 HFraktal :stufe-1 :laenge*(1/Sqrt 2) lt 90 fd 2*:laenge lt 90 HFraktal :stufe-1 :laenge*(1/Sqrt 2) lt 90 fd :laenge end to main cs setpensize[4 4] rt 90 HFraktal end

46 Fraktale 10.2 Das H-Fraktal Stufe 2 Stufe 4 Stufe 6

47 Fraktale 10.3 Das H-Fraktal Stufe 8 Stufe 10

48 Fraktale 10.4 Das H-Fraktal to HFraktalGifSave :stufe :laenge if :stufe<1[ stop] fd :laenge lt 90 HFraktalGifSave :stufe-1 :laenge*(1/Sqrt 2) lt 90 setpc 1+random 7 fd 2*:laenge (gifsave "HFraktal.gif 0 :append 0) make "append "true lt 90 HFraktalGifSave :stufe-1 :laenge*(1/Sqrt 2) lt 90 setpc 1+random 7 fd :laenge end to main cs setpensize[4 4] rt 90 setfc[ ]fill setactivearea[ ] make "append "false HFraktalGifSave end

49 Fraktale 10.5 Das H-Fraktal Gif-Animation

50 Fraktale Mathematische Betrachtungen StufeSeitenlängeAnzahl der neuen Segmente Totale Länge der H-Kurve 1s11 s s21.42 s 30.5 s43.42 s s86.3 s n(0.71) n-1 *s2 n s + 2(0.71) 1 s + 4 (0.71) 2 s+ 8(0.71) 3 s (2 n-1 )(0.71) n-1 s 10.6 Das H-Fraktal

51 Fraktale Ausgehend vom Mittelpunkt wer- den in 3 Richtungen, die jeweils einen Winkel von 120 o bilden, Strecken einer vorgegebenen Län- ge gezeichnet. Das Ende dieser Strecken ist wieder Ausgangs- punkt für die nächsten 3 Strecken, die jetzt aber die halbe Länge besitzen. Das 3-Sterne-Fraktal

52 Fraktale to dreistern :laenge :stufe if :stufe<0 [stop] fd :laenge dreistern :laenge/2 :stufe-1 bk :laenge lt 120 fd :laenge dreistern :laenge/2 :stufe-1 bk :laenge lt 120 fd :laenge dreistern :laenge/2 :stufe-1 bk :laenge lt 120 end to main cs setpensize[5 5] pd dreistern end Stufe 3 Das 3-Sterne-Fraktal

53 Fraktale Stufe 5 Das 3-Sterne-Fraktal

54 Fraktale Ausgehend vom Mittelpunkt werden in 5 Richtungen, die jeweils einen Winkel von 72 o bilden, Strecken einer vorgegebenen Länge gezeich- net. Das Ende dieser Strecken ist wieder Ausgangspunkt für die nächsten 5 Strecken, die jetzt aber ein Drittel der Länge besitzen. Das 5-Sterne-Fraktal

55 Fraktale to fuenfstern :laenge :stufe if :stufe<0 [stop] fd :laenge fuenfstern :laenge/3 :stufe-1 bk :laenge lt 72 fd :laenge fuenfstern :laenge/3 :stufe-1 bk :laenge lt 72 fd :laenge fuenfstern :laenge/3 :stufe-1 bk :laenge lt 72 fd :laenge fuenfstern :laenge/3 :stufe-1 bk :laenge lt 72 fd :laenge fuenfstern :laenge/3 :stufe-1 bk :laenge lt 72 end to main cs setpensize[5 5] pd fuenfstern end Stufe 3 Das 5-Sterne-Fraktal

56 Fraktale Stufe 5 Das 5-Sterne-Fraktal

57 Fraktale Stufe 1 und 2 Die Sierpinski-Kurve to main cs pu lt 90 bk 300 pd setpensize[3 3] SierpinskiKurve 20 4 end to SierpinskiKurve :laenge :stufe If :stufe<0 [stop] SierpinskiKurve :laenge :stufe-1 rt 90 SierpinskiKurve :laenge :stufe-1 lt 90 fd :laenge lt 90 SierpinskiKurve :laenge :stufe-1 rt 90 SierpinskiKurve :laenge :stufe-1 end

58 Fraktale Stufe 3 und 4 Die Sierpinski-Kurve

59 Fraktale Die Hilbert-Kurve to Hilbert1 :laenge :stufe :par If :stufe<0 [stop] lt :par*90 hilbert1 :laenge :stufe-1 (0-:par) fd :laenge rt :par*90 hilbert1 :laenge :stufe-1 :par fd :laenge hilbert1 :laenge :stufe-1 :par rt :par*90 fd :laenge hilbert1 :laenge :stufe-1 (0-:par) lt :par*90 end to main cs setpensize[3 3] hilbert end

60 Fraktale Stufe 1 Die Hilbert-Kurve Stufe 2 Stufe 3

61 Fraktale Die Hilbert-Kurve Stufe 4

62 Fraktale Die Fraktal-Kurve (??) Stufe 4 to main cs setpensize[3 3] pfla 80 3 end to pfla :laenge :stufe If :stufe<0 [stop] repeat 4[fd :laenge rt 180 pfla :laenge/2 :stufe-1 rt 180 fd :laenge wait 3 rt 90] end

63 Fraktale Die Fraktal-Kurve (??) Stufe 1 Stufe 3 Stufe 2 Stufe 4

64 Fraktale Rekursive Dreiecke to dreiecke1 :laenge :stufe If :stufe<0 [stop] rt 30 fd :laenge lt 60 fd :laenge rt 30 dreiecke1 :laenge/2 :stufe-1 lt 150 fd :laenge lt 60 fd :laenge lt 150 lt 120 rt 30 fd :laenge lt 60 fd :laenge rt 30 dreiecke1 :laenge/2 :stufe-1 lt 150 fd :laenge lt 60 fd :laenge lt 150 lt 120 rt 30 fd :laenge lt 60 fd :laenge rt 30 dreiecke1 :laenge/2 :stufe-1 lt 150 fd :laenge lt 60 fd :laenge lt 150 lt 120 end to main cs setpensize[3 3] dreiecke end

65 Fraktale Rekursive Dreiecke Stufe 1 Stufe 3 Stufe 2 Stufe 4 Ausgangselement

66 Fraktale SternFraktal to SternFraktal :laenge :stufe If :stufe<0 [stop] repeat 5[rt 54 fd :laenge rt 162 SternFraktal :laenge/3 :stufe-1 ~ lt 18 fd :laenge lt 126] end to main cs setpensize[3 3] SternFraktal end An die Ecken eines fünfstrahligen Sternes werden rekursiv wieder fünfstrahlige Sterne angefügt

67 Fraktale Stufe 1 Stufe 3 Stufe 2 Ausgangselement SternFraktal

68 Die Länge des Ausgangs- striches sei 1. Dann ist bei der 1. Stufe jede einzelne Länge 1/3. Bei der 2. Stufe ist jede einzelne Länge (1/3) *(1/3) = (1/3) 2 Bei der 3. Stufe also: (1/3) 3 Bei der n.- Stufe also: (1/3) n Die Länge der Kochschen Kurve Fraktale

69 Die Anzahl der Seiten vervierfacht sich bei jedem Schritt, also: 4 1, 4 2, 4 3, 4 n Damit ergibt sich für die gesamte Länge: Dieser Ausdruck wächst mit zunehmendem n über alle Grenzen. Das bedeutet letztendlich, dass die Länge der Kochkurve unendlich ist. Fraktale Die Länge der Kochschen Kurve

70 Die Kochsche Schneeflocke entsteht, wenn nach dem Zeichnen der ersten Koch-Kurve eine Rechtsdrehung um 120 Grad erfolgt. to flocke :size :stufe repeat 3[koch :size :stufe rt 120] end Fraktale Die Kochsche Schneeflocke

71 Animation Fraktale Die Kochsche Schneeflocke

72 Dreht man jetzt nicht nach rechts sondern nach links, so erhält man interessanterweise ein völlig anderes Fraktal. to AntiSchneeflocke :laenge :stufe lt 30 repeat 3[koch :laenge :stufe lt 120] end to main cs setpensize[3 3] home pu bk 100 rt 90 fd 200 lt 90 pd ;;damit die ganze Graphik angezeigt wird AntiSchneeflocke end Fraktale Die Kochsche AntiSchneeflocke to koch :laenge :stufe If :stufe<0 [fd :laenge stop] koch :laenge/3 :stufe-1 LT 60 koch :laenge/3 :stufe-1 RT 60 RT 60 koch :laenge/3 :stufe-1 LT 60 koch :laenge/3 :stufe-1 end

73 Fraktale Ausgangselement Die Kochsche AntiSchneeflocke Stufe 3 Stufe 1

74 Fraktale Mathematische Betrachtungen StufeSeitenlängeAnzahl der neuen Segmente Totale Länge der Kurve Fläche 11s33 sA 21/3 s124 sA- 1/3 A 31/9 s4848/9 s = 5,33 sA-1/3 A – 4/27 A 41/27 s19264/9 s = 7,11 sA-1/3 A – 4/27 A – 48 (1/729) A n(1/3) n-1 *s(3)4) n-1 (3)(1/3) n-1 (4) n-1 sA- 1/3 A* (1+4/9+(4/9) 2 + …+(4/9) n ) Die Kochsche AntiSchneeflocke

75 Der Umfang der Kochschen Schneeflocke Wie in Folie 56 schon gezeigt wurde, ist die Länge der Kochschen Kurve: Da die Kochsche Schneeflocke aus drei Stücken der Kochschen Kurve besteht, erhält man jetzt für die Länge des Umfangs: Der Umfang hat natürlich auch hier einen unendlichen Wert, da gilt: Fraktale Die Kochsche Schneeflocke Der Umfang

76 Stufe 0: Das gleichseitige Dreieck habe die Seitenlänge 1. Damit erhält man für den Flächeninhalt: Stufe 1: Hier werden die Flächeninhalte von drei Dreiecken addiert. Jeder Flächeninhalt eines solchen Dreiecks ist 1/9 des Flächeninhalts des Ausgangsdreiecks. Es ergibt sich also: Fraktale Die Kochsche Schneeflocke Der Flächeninhalt

77 Die Flächeninhalte der Dreiecke, die hinzugefügt werden, ist jeweils 1/9 des Flächeninhalts der Dreiecke, die auf der Stufe zuvor hinzugefügt wurden. In der 2. Stufe werden 34 Dreiecke hinzugefügt. Für den Flächeninhalt ergibt sich also: In der 3. Stufe werden 316 Dreiecke hinzugefügt, also: Fraktale Die Kochsche Schneeflocke Der Flächeninhalt

78 Für die n-te Stufe ergibt sich dann: Mit Hilfe der vollständigen Induktion kann man zeigen: Setzt man das Ergebnis in A(n) ein, so erhält man: Fraktale Die Kochsche Schneeflocke Der Flächeninhalt

79 Setzt man das Ergebnis in A(n) ein, so erhält man: Fraktale Die Kochsche Schneeflocke Der Flächeninhalt

80 Der Bruchterm hat einen Grenzwert, dieser lautet: Damit ergibt sich insgesamt für A(n ): Man hat es also bei der Kochschen-Schneeflocke mit einer endlichen Fläche zu tun, obwohl der Umfang einen unendlichen Wert annimmt. Fraktale Die Kochsche Schneeflocke Der Flächeninhalt

81 Nimmt man a als Länge des Ausgangsdreiecks, so erhält man für die gesamte Fläche in Abhängigkeit von der Seitenlänge des ersten Dreiecks Dieses ist natürlich für einen bestimmten Zahlenwert a ein endlicher Wert. Fraktale Die Kochsche Schneeflocke Der Flächeninhalt

82 Bäume Der Binärbaum – mit IFELSE to Baum1 :laenge ifelse :laenge<10 [stop][FD :laenge RT 45 baum1 :laenge/2 LT 90 baum1 :laenge/2 RT 45 BK :laenge] end to main clearscreen setfc [0 0 0] fill setpensize[4 4] penup Back 150 pendown baum1 200 end

83 Bäume Der Binärbaum – mit IF to Baum1 :laenge if :laenge<10 [setpc 1+random 7 stop] FD :laenge RT 45 baum1 :laenge/2 LT 90 baum1 :laenge/2 RT 45 BK :laenge end to main clearscreen setfc [0 0 0] fill setpensize[4 4] baum1 200 end Der Baum besteht aus einem Stamm mit der Länge :laenge, der an- schließend unter 45 o nach rechts bzw. links durch zwei Zweige mit der Länge :laenge/2 fortgesetzt wird, an jeden Zweig schließen unter 45 o wieder zwei Zweige an usw.

84 Bäume Der Binärbaum – mit IF to Baum2 :laenge if :laenge>10 [setpc 1+random 7 FD :laenge RT 30 baum2 :laenge*0.8 LT 90 baum2 :laenge*0.6 RT 60 BK :laenge] end Wenn man die Winkel bei der Rechtsdrehung verändert (die Summe muss 90 o ergeben), erhält man einen leicht unsymmetrischen Baum. Zusätzlich kann man noch die Länge der linken bzw. rechten Äste mit einem unterschiedlichen Faktor verkleinern. to main clearscreen setfc [0 0 0] fill setpensize[4 4] baum2 200 end

85 Bäume Baum mit vier Ästen to Baum :laenge :stufe if :stufe<1[setpc 1+random 7 stop] lt 25 fd :laenge Baum.5*:laenge :stufe-1 bk :laenge rt 20 fd 0.6*:laenge Baum 0.6*:laenge :stufe-1 bk 0.6*:laenge rt 25 fd 0.5*:laenge Baum 0.6*:laenge :stufe-1 bk 0.5*:laenge rt 25 fd 0.5*:laenge Baum 0.6*:laenge :stufe-1 bk 0.5*:laenge lt 45 end

86 Bäume Der verzweigte Baum to baum :laenge ifelse :laenge<15 [forward :laenge back :laenge stop][ setpc 1+random 7 forward :laenge/3 left 30 baum :laenge*2/3 right 30 setpc 1+random 7 forward :laenge/6 right 25 baum :laenge/2 left 25 setpc 1+random 7 forward :laenge/3 right 25 baum :laenge/2 left 25 setpc 1+random 7 forward :laenge/6 back :laenge] end

87 Bäume Der verzweigte Baum – mit IF to baum :laenge if :laenge<15 [stop] forward :laenge back :laenge setpc 1+random 7 forward :laenge/3 left 30 baum :laenge*2/3 right 30 setpc 1+random 7 forward :laenge/6 right 25 baum :laenge/2 left 25 setpc 1+random 7 forward :laenge/3 right 25 baum :laenge/2 left 25 setpc 1+random 7 forward :laenge/6 back :laenge end

88 Die bekannten Pythagoras- Bäume gehen zurück auf den holländischen Ingenieur Bosmann. Er entwarf diese während des 2. Weltkrieges an dem Zeichenbrett, an dem er sonst seine U-Boot-Pläne zeichnete. Die Abbildung beruht auf der Figur des Pythagoras- Lehrsatzes. Die beiden Katheten des rechtwinkligen Dreiecks dienen als Verzweigung. Der symmetrische Pythagoras Baum Bäume

89 Man geht dazu aus von der Figur zum Satz von Pythagoras, also von einem rechtwinkeligen Dreieck, dessen Seiten jeweils die Basis eines nach außen zu gezeichneten Quadrates sind. Dann stellt man sich vor, dass die Kathetenquadrate wieder Hypotenusenquadrat einer weitern derartigen Figur sind usw. Bäume Der symmetrische Pythagoras Baum

90 to pyth1 :laenge quadrat :laenge if :laenge<30 [RT 90 FD :laenge stop] setpc 1+random 7 wait 30 FD :laenge LT 45 pyth1 :laenge*Cos 45 pyth1 :laenge*Sin 45 RT 45 setpc 1+random 7 wait 30 FD :laenge LT 90 end Bäume Der symmetrische Pythagoras Baum

91 to pyth2 :laenge quadrat :laenge if :laenge<40 [RT 90 FD :laenge stop] setpc 1+random 7 wait 60 FD :laenge LT 30 pyth2 :laenge*Cos 30 pyth2 :laenge*Sin 30 RT 30 setpc 1+random 7 wait 60 FD :laenge LT 90 end Bäume Der unsymmetrische Pythagoras Baum

92 Bäume Auch hier lassen sich viele nette Rech- nungen anstellen, wobei man sich aller- dings, um allzu komplizierte Ausdrücke zu vermeiden, auf den 45°-Fall be- schränken sollte. Hier erhält man bei- spielsweise als Gesamthöhe der Figur, die Gesamtflächen aller pro Stufe hinzu- kommenden Quadrate ist c 2, die Umfän- ge der jeweils hinzukommenden neuen Figuren bilden eine geometrische Reihe mit dem Quotienten 2, daher hat die Figur insgesamt einen unendlichen Um- fang, zeichnet man die aufgesetzten Quadrate nur nach einer Seite, ist der Quotient 1/  2 und die Reihe hat daher eine endliche Summe. Der unsymmetrische Pythagoras Baum

93 to busch :laenge :stufe if :stufe=0 [stop] fd :laenge lt 40 busch :laenge/3.5 :stufe-1 rt 55 busch :laenge/2 :stufe-1 rt 50 busch :laenge/2.5 :stufe-1 lt 65 bk :laenge end Unsymmetrischer Strauch Sträucher Ein Strauch mit drei Verzweigungen erfordert natürlich auch drei Selbst- aufrufe des Programms. Verändert man dann noch die Winkel und die Längenverkürzung, so sieht der Baum schon aus wie ein Strauch.

94 to tree1 :size if :size<5[fd :size back :size stop] fd :size/3 left 30 tree1 :size*2/3 right 30 fd :size/6 right 25 tree1 :size/2 left 25 fd :size/3 right 25 tree1 :size/2 left 25 fd :size/6 back :size end Sträucher

95 to Farn :Size If :Size < 5 [Stop] Forward :Size / 20 Left 80 Farn :Size * 0.3 Right 82 Forward :Size / 20 Right 80 Farn :Size * 0.3 Left 78 Farn :Size * 0.9 Left 2 Back :Size / 20 End to Go New SetPos [ ] PenDown Farn 640 End to New Cs SetSC[0 0 0] SetPC[ ] PenUp HideTurtle End Der Farn Aufruf mit: go

96 Im Königsdreieck (alle Seiten sind gleich lang), das sich zwischen drei Pyramiden erstreckt, befinden sich irgendwo unter dem Staub der Jahrtausende der Eingang zur Grabkammer des Pharaos Tutramses. Schon viele Schatzsucher haben sich aufgemacht, das Grab zu finden und nach den kostbaren Grabbeigaben zu schürfen. Vergeblich! Der Fluch des Pharaos bewirkt, dass sich der Schatzsucher, sobald er sich im Königsdreieck befindet, nur geradlinig auf eine der Pyramidenspitze zu bewegen kann. Dabei schafft er jeweils genau die Hälft der Strecke bis zur nächsten Pyramide und muss eine Weile rasten, um dann von neuem irgendeine Pyramide anzusteuern. Gibt es Stellen im Königsdreieck, die ein Schatzsucher niemals erreichen kann, so dass der Eingang zur Grabkammer verborgen bleibt und der Pharao seine ewige Ruhe behalten wird? Der Fluch des Pharaos (oder das Chaos-Spiel) Fraktale

97 Die Regeln 1. Wähle einen beliebigen Startpunkt P im Dreieck ABC 2. Würfle oder ziehe aus einer Urne ein Los mit einer Zahl zwischen 1 und 6 3. Verbinde den Punkt P mit der Ecke A, wenn eine 1 oder 2 gewürfelt wurde mit der Ecke B, wenn eine 3 oder 4 gewürfelt wurde mit der Ecke C, wenn eine 5 oder 6 gewürfelt wurde. Bestimme den Mittelpunkt M der Verbindungsstrecke. Dies ist der neue Punkt P*. 4. Gehe zu 2. Das Chaos-Spiel Fraktale

98 Das MSWLogo-Programm to main cs setpensize[2 2] hat ChaosSpiel 0 0 end to ChaosSpiel :x :y make „z random 3 make „z :z+1 if :z=1 [PunktA] if :z=2 [PunktB] if :z=3 [PunktC] ChaosSpiel :x :y end to PunktA make „x (:x-200)/2 make „y (:y+200)/2 pu setx :x sety :y pd fd 1 bk 1 end to PunktB make „x (:x+200)/2 make „y (:y+200)/2 pu setx :x sety :y pd fd 1 bk 1 end to PunktC make „x :x/2 make „y (:y-200)/2 pu setx :x sety :y pd fd 1 bk 1 end Fraktale Das Chaos-Spiel

99 Aufgaben 1. Führe das Programm aus. Um es zu stoppen, musst du den HALT- Button anklicken. 2. Die Koordinaten der Eckpunkte A(-200,200), B(200,200) und C(0,-200) sind vorgegeben. Verändere das Programm so, dass die Koordinaten der Punkte eingegeben werden können. 3. Was passiert, wenn man 4 Punkte benutzt? Schreibe das Programm um und teste es. Ergebnis? Fraktale Das Chaos-Spiel

100 Das Sierpinski-Dreieck Fraktale to sierpinski :stufe :laenge if :stufe=0 [repeat 3[fd :laenge rt 120]stop] sierpinski :stufe-1 :laenge/2 fd :laenge rt 120 end

101 Das Sierpinski-Dreieck – mit IF Fraktale to sierpinski :laenge if :laenge<20 [repeat 3[fd :laenge rt 120]stop] sierpinski :laenge/2 fd :laenge rt 120 end

102 Das Sierpinski-Dreieck Fraktale

103 Das Sierpinski-Dreieck Fraktale to fill_it setfc 9-:level rt 30 pu fd 0.6*:size fill bk 0.6*:size pd lt 30 end to main cs setpensize[3 3] pu bk 100 rt 30 pd for[level 1 4][ start 500 :level wait 30] end to start :size :level if :level=0[stop] repeat 3[zeichne rt 120] fill_it end to zeichne start :size/2 :level-1 fd :size end

104 to sierpinski :level :laenge if :level=0[repeat 3[fd :laenge rt 120]stop] sierpinski :level-1 :laenge/2 fd :laenge rt 120 end Aufruf: sierpinski Das Sierpinski-Dreieck Fraktale

105 Das Sierpinski-Dreieck Fraktale

106 to sierpinski2 :laenge if :laenge<5 [stop] pu fd :laenge pd fd :laenge bk :laenge rt 90 fd :laenge bk :laenge lt 90 sierpinski2 :laenge/2 pu bk :laenge pd fd :laenge bk :laenge rt 90 fd :laenge bk :laenge lt 90 sierpinski2 :laenge/2 pu rt 90 fd :laenge lt 90 pd fd :laenge bk :laenge rt 90 fd :laenge bk :laenge lt 90 sierpinski2 :laenge/2 pu rt 90 bk :laenge lt 90 pd end Aufruf: sierpinski2 200 Das Sierpinski-Dreieck Fraktale

107 Das folgende Beispiel zeigt, dass sich das Sierpinski- Dreieck auf unzählige Arten variieren lässt. Das Sierpinski-Dreieck Fraktale

108 to sierpinski3 :laenge if :laenge<5 [stop] pu fd :laenge fd :laenge rt 90 pd fd :laenge bk :laenge rt 90 fd :laenge bk :laenge lt 90 sierpinski3 :laenge/2 pu lt 90 bk :laenge bk :laenge pd fd :laenge bk :laenge rt 90 fd :laenge bk :laenge lt 90 sierpinski3 :laenge/2 pu rt 90 fd :laenge lt 90 pd fd :laenge bk :laenge rt 90 fd :laenge bk :laenge lt 90 sierpinski3 :laenge/2 pu rt 90 bk :laenge lt 90 pd end Aufruf: sierpinski3 200 Das Sierpinski-Dreieck Fraktale

109 To Display :Order SetPC[ ] SetPos [ ] Label Sentence [Antenne Tree Level] :Order End To Go :Order New Init :Order Display :Order Home Right 90 SetPC[ ] PenDown Tree :Order :Size End To Init :Order Make "Size 150 Make "RootHalf 1/Sqrt 2 End To New Cs SetSC[0 0 0] SetPC[ ] Setpensize[4 4] PenUp HideTurtle End To Tree :Order :Size If :Order < 1 [Stop] Forward :Size Left 90 Tree :Order-1 :RootHalf*:Size Left 90 Forward 2*:Size Left 90 Tree :Order-1 :RootHalf*:Size Left 90 Forward :Size End Aufruf: go 8 Der Antennenbaum Fraktale

110 Der Cantor-Staub Version 1 Fraktale to Cantor :stufe :laenge Ifelse :stufe<0[setpc 1+random 7 FD :laenge][pd Cantor :stufe-1 :laenge/3 Pu fd :laenge/3 Pd Cantor :stufe-1 :laenge/3] end

111 Der Cantor-Staub Version 2 Fraktale to CantorQuadrate :laenge :stufe if :stufe=0 [pd quadrat :laenge stop] repeat 4[pu fd :laenge rt 90 CantorQuadrate :laenge/3 :stufe-1] end to quadrat :laenge repeat 4[fd :laenge rt 90] end

112 Der Cantor-Staub Version 3 Fraktale to cantor :level :laenge if :level=0[repeat 4[fd :laenge rt 90]stop] cantor :level-1 :laenge/3 fd :laenge rt 90 end

113 Der Cantor-Staub Version 4 Fraktale to CantorVersion4 :laenge :stufe If :stufe<0 [stop] repeat 4[CantorVersion4 :laenge/3 :stufe-1 fd :laenge wait 3 rt 90] end to main cs setpensize[2 2] CantorVersion end

114 Der Cantor-Staub Version 4 Fraktale Stufe 1 Stufe 3 Stufe 2 Stufe 4

115 Sierpinski-Carpet Fraktale to carpet :laenge :stufe if :stufe<1 [stop] repeat 4[shape rt 90] carpetfill end to carpetfill pu rt 45 fd :laenge/2 setfc 7-:stufe fill bk :laenge/2 lt 45 pd end to main clearscreen setfc [ ] fill setpensize[5 5] pu bk 100 rt 90 bk 200 lt 90 pd setpc 0 pendown Carpet end to shape carpet :laenge/3 :stufe-1 fd :laenge/3 carpet :laenge/3 :stufe-1 fd 2*:laenge/3 end Aufruf: carpet 400 3

116 Sierpinski-Carpet Fraktale

117  Im Jahre 1891 veröffentlichte D. Hilbert in den M. Annalen eine Arbeit mit dem Titel Über die stetige Abbildung einer Linie auf ein Flächenstück, in der er eine Kurve beschrieb, die durch jeden Punkt eines Quadrats geht.  Als Grundfigur verwendet man ein unten offenes Quadrat, das einmal als Rechtskurve und zum anderen als Linkskurve durchlaufen wird. Die Hilbert-Kurve Beim Zeichnen der Grund- figur wird jeweils in den Ecken, d.h. unmittelbar vor der Vorwärts-Anweisung, die Prozedur selbst aufge- rufen. Man kann sich vorstellen, dass die vier Ecken „aufgeblasen“ und durch die Grundfigur ersetzt werden. Fraktale

118 Die Hilbert-Kurve

119 Fraktale Die Hilbert-Kurve

120 Fraktale Die Hilbert-Kurve

121 Rekursive Konstruktion 1.Teile ein quadratisches Gebiet auf in 4 kongruente Teilquadrate 2.Finde eine raumfüllende Kurve für jedes Teilquadrat 3.Füge die Teilfiguren geeignet zusammen Fraktale Die Hilbert-Kurve

122 Fraktale Die Hilbert-Kurve

123 to hilbert :size :level :vorzeichen If :level=0[stop] lt 90*:vorzeichen hilbert :size :level-1 -:vorzeichen wait 5 setpc 1+random 8 fd :size rt 90*:vorzeichen hilbert :size :level-1 :vorzeichen wait 5 setpc 1+random 8 fd :size hilbert :size :level-1 :vorzeichen rt 90*:vorzeichen wait 5 setpc 1+random 8 fd :size hilbert :size :level-1 -:vorzeichen lt 90*:vorzeichen end Aufruf: hilbert Fraktale Die Hilbert-Kurve

124 Lindenmayer-Systeme Das L-System (Lindenmayer- System) geht auf den Biologen Aristid Lindenmayer ( ) zurück, der versuchte, mit Hilfe von formalen Syste- men und Grammatiken Wachs- tumsprozesse lebender Orga- nismen nachzubilden. Vor allem interessierten ihn Verzwei- gungsmechanismen bei Bäumen und Büschen. Einführung

125 Lindenmayer-Systeme Geboren am 17. November 1925 in Budapest Gestorben am 30. Oktober 1989 in den Niederlanden Universitätsabschluss in Chemie, danach emigriert in die USA 1968 ein grammatikalisches Modell zur Darstellung von Pflanzen entwickelt Aristid Lindenmayer - Biographie

126 Lindenmayer-Systeme Einführung Das L-System ist ein Er- setzungssystem. Ausgehend vom Startsymbol, dem Axiom, wird jedes Zeichen schrittweise nach festgelegten Regeln durch eine bestimmte Zeichenfolge ersetzt, die auch aus demsel- ben Zeichen bestehen kann. In jedem Iterationsschritt werden alle vorhandenen Regeln gleich- zeitig auf die schon vorhandene Zeichenkette angewendet.

127 Lindenmayer-Systeme  L-Systeme.  Deterministische L-Systeme, bzw. nicht determi- nistische oder stochastische L-Systeme. Stochastische L-System enthalten, wie der Name schon sagt, Zufallselemente, Deterministische nicht. Deter- ministische L-System be-zeichnet man mit einem “D”..Kontext freie bzw. Kontext sensitive L- Systeme. Bei Kontext sensitiven L-Systemen hängt die En-wicklung der einzelnen Elemente von ihren Nachbarn ab nicht so bei den Kontext freien. Je nach Größe des berücksichtigten Kon- textes werden die L-Systeme 1,2,3.. gekenn- zeichnet. 0 steht für Kontext freie. Einführung

128 Lindenmayer-Systeme Es sei V ein Alphabet (a 1, a 2, a 3,... a n ), V* die Menge aller möglichen Wörter aus V und V+ die Menge aller mög- lichen Wörter aus V ohne {  }. Ein 0L-System ist das geordnete Tripel [V, ,P],in dem V das Alphabet   V+ ein nichtleeres Wort genannt Axiom und P  VxV+ eine endliche Menge an Produktionsregeln ist. Eine Produktionsregel (a,  )  P wird als a   geschrie- ben. Der Buchstabe a und das Wort  werden Vorgänger und Nachfolger genannt (amerikan. predecessor und successor). Für jeden Buchstaben a existiert mindestens ein Wort   V*, so dass a  . Ist kein spezielles Wort  für einen be- stimmten Vorgänger a  V gegeben, so wird a  a der Menge aller P hinzugefügt. Einführung

129 Lindenmayer-Systeme Ein Lindenmayer-Sytem besteht aus drei Arten von Regeln:.einer Startregel,.einer endlichen Menge von Hauptersetzungsregeln und.einer Abbruchregel. Zur Erzeugung einer Zeichenfolge wird mit der Startregel begonnen, dann werden n-mal die Hauptersetzungsregeln angewendet; zum Schluss tritt die Abbruchregel in Aktion. Die Zahl n heißt Ordnung der erzeugten Zeichenfolge. Einführung

130 Lindenmayer-Systeme Die grundlegende Idee der grafischen Interpretation beruht auf einer Interpretation des Wortes durch eine Turtle. Man beschreibt dies durch ein sog. Tripel (x,y,), wobei (x,y) die Position im Koordinatensystem darstellt und  die Blickrichtung der Turtle. F : Turtle bewegt sich um einen Schritt der Länge d und zieht dabei eine Linie. + : Turtle verändert die Blickrichtung um einen bestimmten Winkel nach rechts. - : Turtle verändert die Blickrichtung um einen bestimmten Winkel nach links. Einführung

131 Lindenmayer-Systeme Mögliche Anwendungen Einführung Lindenmayer-Systeme stellen eine ausgesprochen effiziente Komprimierung von Pflanzen-Modellen dar. Durch den inhä- renten Nichtdeterminismus limitierter Lindenmayer-Systeme lassen sich fast beliebig viele verschiedene – jedoch einander ähnelnde – Pflanzen-Modelle aus einem System ableiten. Zudem erfordert die Berechnung eines statisch implemen- tierten Systems vergleichsweise wenig Aufwand. Es liegt also eine Anwendung nahe, in der große Pflanzenbestände gene- riert werden müssen. Zum Beispiel bei der Simulation eines Waldes in Computerspielen oder in Applikationen zur Land- schaftsplanung limitierte Lindenmayer-System zum Einsatz kommen, bei denen die Bäume in Echtzeit nur für den gerade sichtbaren Ausschnitt berechnet werden. Aus einer Studienarbeit von Frank Böhmer (TU Braunschweig, 2002 Seite 10)

132 Lindenmayer-Systeme Für das Wachstum sind Elemente aus zwei verschiedenen Bakterientypen verantwortlich, die sich durch ihre Größe sowie durch ihr Teilungsverhalten unterscheiden. Wir nennen sie A und B. Da beide Typen asymmetrisch aufgebaut sind, können sie in der Kette entweder nach links oder nach rechts orientiert sein. Es gibt daher vier unterschiedliche Elemente. Die Bakterie Anabaena Catenula

133 Lindenmayer-Systeme Das Alphabet V des L-Systems beschränkt sich auf vier Zeichen. Die Bakterie Anabaena Catenula Eine nach rechts orientierte A-Baktereie teilt sich nach einer gewissen Zeit in eine nach rechts orientierte B-Bakterie und in eine nach links orientierte A-Bakterie und sowie auch spiegelverkehrt. Es ergibt sich folgende Produktionsregel:

134 Lindenmayer-Systeme  Für die B-Bakterien gelten folgende Produktionsregeln (p3 und p4): Die Bakterie Anabaena Catenula Was jetzt noch fehlt ist eine Startbakterie. Wir erhalten damit:

135 Lindenmayer-Systeme Vom Axiom ausgehend und die Produktionsregeln anwendend erhält man eine Sequenz von Zeichenketten, die die verscheidenen Wachstumsstadien von Anabanea Catenula entsprechen. Die Bakterie Anabaena Catenula

136 Lindenmayer-Systeme 1. Beispiel Das Alphabet besteht aus: V = {a,b} Das Axiom lautet:  = a Die Produktionsregeln lauten: p1 : a  b p2 : b  ba Damit ergibt sich für die Evolutionen: g 0 = a g 1 = b g 3 = ba g 4 = bab g 5 = babba g 6 = babbabab usw.

137 Lindenmayer-Systeme 1. Beispiel Damit ergibt sich für die Evolutionen: g 0 = a g 1 = b g 3 = ba g 4 = bab g 5 = babba g 6 = babbabab usw. Bestimmt man die Länge der jeweiligen Zeichenkette, so erhält man die Fibonacci-Folge 1 – 1 – 2 – 3 – 5 – – – 55 – 89 - …..

138 Lindenmayer-Systeme 2. Beispiel Das Alphabet besteht aus: V = {F,+,+} Das Axiom lautet:  = F Die Produktionsregeln lauten: p1 : F  F - F + + F - F p2 : +  + p3 : -  - Damit ergibt sich für die Evolutionen: g 0 = F g 1 = F - F + + F - F usw.

139 Lindenmayer-Systeme Befehle der Turtle

140 Lindenmayer-Systeme Befehle der Turtle X Eine Ecke ist Ausgangspunkt (x-Koordinate) Y Eine Ecke ist Ausgangspunkt (y-Koordinate) G Ebenfalls ein Generator, ähnlich wie F f Vorwärtsbewegung ohne zu zeichnen Z Zufallsfarbe < Die Farbnummer wird um 1 verkleinert > Die Farbnummer wird um 1 vergrößert C Gefolgt von 000 bis 255 (gewählte Farbe)

141 Lindenmayer-Systeme Erste einfache fraktale Kurven Die Kochkurve Axiom: F Ersetzungsregel: F  F+F - -F+F Winkel:  = 60 o

142 Lindenmayer-Systeme Erste einfache fraktale Kurven Die Kochkurve Axiom: F Ersetzungsregel: F  F+F- -F+F Winkel:  = 60 o

143 Lindenmayer-Systeme Erste einfache fraktale Kurven Die Kochsche Schneeflocke Axiom: F - - F - - F Ersetzungsregel: F  F+F- -F+F Winkel:  = 60 o

144 Lindenmayer-Systeme Erste einfache fraktale Kurven Die Peano Kurve Axiom: X Ersetzungsregel X  XFYFX+F+YFXFY-F-XFYFX Y  YFXFY-F-XFYFX+F+YFXFY Winkel:  = 90 o

145 Lindenmayer-Systeme Erste einfache fraktale Kurven Die Peano Kurve Axiom: X Ersetzungsregel X  XFYFX+F+YFXFY-F-XFYFX Y  YFXFY-F-XFYFX+F+YFXFY Winkel:  = 90 o

146 Lindenmayer-Systeme Erste einfache fraktale Kurven Die Hilbert Kurve Axiom: X Ersetzungsregel X  -YF+XFX+FY- Y  +XF-YFY-FX+ Winkel:  = 90 o

147 Lindenmayer-Systeme Erste einfache fraktale Kurven Die Hilbert Kurve Axiom: X Ersetzungsregel X  -YF+XFX+FY- Y  +XF-YFY-FX+ Winkel:  = 90 o

148 Lindenmayer-Systeme Erste einfache fraktale Kurven Das Sierpinski Dreieck - 1.Version Axiom: F-F-F Ersetzungsregel F->F-F+F+F-F Winkel:  = 120 o

149 Lindenmayer-Systeme Erste einfache fraktale Kurven Das Sierpinski Dreieck- 2.Version Axiom: FXF + + FF + + FF Ersetzungsregel FF  FF X  ++ FXF - - FXF - - FX ++ Winkel:  = 60 o

150 Lindenmayer-Systeme Erste einfache fraktale Kurven Das Sierpinski Dreieck Axiom: FXF + + FF + + FF Ersetzungsregel FF  FF X  ++ FXF - - FXF - - FX ++ Winkel:  = 60 o

151 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Ein einfacher Baum Axiom: F Ersetzungsregel F  F[+F][-F] Winkel:  = 45 o

152 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Axiom: F Ersetzungsregel F  F[+F]F[-F]F Winkel:  = 25,7 o Strauch 1 Strauch 2 Axiom: F Ersetzungsregel F  F[+F]F[-F][F] Winkel:  = 20,0 o Strauch 3 Axiom: F Ersetzungsregel F  FF-[-F+F+F]+ [+F-F-F] Winkel:  = 22,5 o Strauch 4 Axiom: X Ersetzungsregel X  F[+X]F[-X]X F  FF Winkel:  = 20,0 o Strauch 5 Axiom: X Ersetzungsregel X  F[+X][-X]FX F  FF Winkel:  = 25,7 o Strauch 6 Axiom: X Ersetzungsregel X  F-[[X]+X]+F[+FX]-X F  FF Winkel:  = 22,5 o

153 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Axiom: F Ersetzungsregel F  F[+F]F[-F]F Winkel:  = 25,7 o Strauch 1

154 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Axiom: F Ersetzungsregel F  F[++F-F]F[--F+F]F Winkel:  = 180/14 o Strauch

155 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Axiom: F Ersetzungsregel F  FF+[+F-F-F]-[-F+F+F] Winkel:  = 25 o Strauch

156 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Axiom: F Ersetzungsregel F  F[ F F]F[ F F]-F Winkel:  = 1 o Strauch

157 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Axiom: F Ersetzungsregel F  FF+[+F-F[-F]+F]-[- F+F[+F]-FF] Winkel:  = 25 o Strauch

158 Lindenmayer-Systeme Sträucher und Bäume - zweidimensional Axiom: F Ersetzungsregel F  FF+[+F—F+F]-[-F+F-F] Winkel:  = 26 o Strauch

159 Sträucher und Bäume – mit Mathematica Lindenmayer-Systeme n=3; ultraSchildkroete[ {"V"->"VV+[+V-V[-V]+V]-[- V+V[+V]-VV]"},"VZ",n,180/8, 1.,{0,0},{0,1},6,(16*10^n+5)/7];

160 Sträucher und Bäume – mit Mathematica Lindenmayer-Systeme n=4; ultraSchildkroete[{"V"->"VV+[+V-- V+V]-[-V+V-V]"},"VZ",n,26, 1.,{0,0},{0,1},6,(8^n+1)/3];

161 Sträucher und Bäume – mit Mathematica auch dreidimensional Lindenmayer-Systeme pflanze1[n_]:= botanic3D[{"x"-> "vdddvxzuuurrrddvxzuurrddvxzuurr rvvzrrddv P2+v-vv-v++z-zz- z+GxzuurrdddvP2+v-vv-v++z-zz- z+G xzuuurrrddvP2+v-vv-v++z-zz- z+Gxzuurzz"}, "x",n,{12,45,15},1.,{0.,0.,0.}, {{0,0,1},{0,1,0},{1,0,0}}]; pflanze1[2];

162 pflanze2[n_]:= botanic3D[{"x"-> "kkx-kxddrrblluuuurrbllddh+rrrr+ ixrblj-rr-ixddrbluurrukk (ddmuurddmuurddmuurddmuurddmuurdd muurddmuurddmuur) hhdlluurrbllddj++kxrblh-kkrrhhhh", "k"->"vvv","h"->"zzz","i"->"vvvv","j"- >"zzzz", "m"->"P5-v+v+v++++v+v+v+++++G", "b"->"dP2- vv+vvv+vv++++vv+vvv+vv+++++Gu"}, "x",n,{25,45,30},1.,{0.,0.,0.}, {{0,0,1},{0,1,0},{1,0,0}}]; pflanze2[4]; Lindenmayer-Systeme Sträucher und Bäume – mit Mathematica auch dreidimensional

163 Lindenmayer-Systeme pflanze2[4];

164 pflanze3[4]; pflanze3[n_]:= botanic3D[{"x"-> "-kxddrrblluuuurrbllddh+rrr- ixddrbluuuurrbllddj+rrr -ixddrbluuuurrbllddj+kkxrr (ddmuurrddmuurrddmuurrddmuurrrdmurrdm urrdmurrdmur) llrrhh", "k"->"vvv","h"->"zzz","i"->"vvvv","j"- >"zzzz", "m"->"P3-v+v+v++++v+v+v+++++G", "b"->"dP1- vv+vvv+vv++++vv+vvv+vv+++++Gu"}, "x",n,{25,45,30},1.,{0.,0.,0.}, {{0,0,1},{0,1,0},{1,0,0}}]; Sträucher und Bäume – mit Mathematica auch dreidimensional Lindenmayer-Systeme

165 pflanze3[4]; Lindenmayer-Systeme Sträucher und Bäume – mit Mathematica auch dreidimensional

166 rose[2]; rose[n_]:= botanic3D[{"x"-> "kkk--- vddddrrblluuuuuuuurrbllddddz+++vrrr--- vrblz+++ vrrr---vddddrbluuuuuuuurrbllddddz+++ krr(ddmuurrddmuurrddmuurrddmuurrrd murrdmurrdmurrdmur) llrrhzzhhh", "k"->"vvv","h"->"zzz", "m"->"P5-- v++v++v++v++v++v++++G", "b"->"dP1- v+v+v++++v+v+v+++++Gu"}, "x",n,{15,45,30},1.,{0.,0.,0.}, {{0,0,1},{0,1,0},{1,0,0}}]; Sträucher und Bäume – mit Mathematica auch dreidimensional Lindenmayer-Systeme

167 rose[2]; Sträucher und Bäume – mit Mathematica auch dreidimensional Lindenmayer-Systeme

168 Kommerzielle Programme – Xfrog 3.5 Seite für XFrog3.5 rogSubStart.htm Startseite von Greenworks oductsSubStart.htm Lindenmayer-Systeme

169 Kommerzielle Programme – Xfrog 3.5 Lindenmayer-Systeme Seite für XFrog3.5 com/greenwebNew/products /xfrogSubStart.htm

170 Kommerzielle Programme – Xfrog 3.5 Lindenmayer-Systeme

171 Kommerzielle Programme – Xfrog 3.5 Lindenmayer-Systeme

172 Aufgaben


Herunterladen ppt " Wolken sind keine Kugeln, Berge keine Kegel, Küstenlinien keine Kreise. Die Baumrinde ist nicht glatt.  Definition: Eine Figur wird selbstähnlich genannt,"

Ähnliche Präsentationen


Google-Anzeigen