Grundlagen der funktionsorientierten Programmierung mit SCHEME/Fraktale

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Scheme</language>
[[Bild:Mandelbrot1.png|miniatur|Die vielleicht berühmteste fraktale Struktur: Das Apfelmännchen]]

Der Begriff '''Fraktal''' (lat. fractus "gebrochen") geht auf den französisch-US-amerikanischer Mathematiker '''Benoît Mandelbrot''' (* 20. November 1924) zurück. Mit ihm werden natürliche oder künstliche Gebilde bzw. geometrische Muster bezeichnet, die einen hohen Grad an Selbstähnlichkeiten aufweisen.

== Das Sierpinski-Dreieck ==

Diese selbstähnliche Figur ist nach dem polnischen Mathematiker '''Wacław Franciszek Sierpiński''' (* 14. März 1882; † 21. Oktober 1969) benannt. Die nachfolgende Abbildung zeigt die Konstruktion dieses Dreiecks:

<blockquote>[[Bild: Sierpinski1.GIF]]</blockquote>

'''Implementation:'''

<table cellspacing="0" cellpadding="2">
<tr>
<td valign="top">
<canvas w="380" h="400"></canvas>
</td>
<td valign="top" width="100%">

<code id="4ca83081addcb">
(define n-eck
  (lambda (turtle len n)
    ...))

(define sierpinski
  (lambda (turtle len n) 
    (n-eck turtle len 3)
    (if (> n 1)
        (begin          
          ...))))

(define sierpinski-dreieck
  (lambda (len n)
    (clear canvas1)
    (move turtle1 100 300)
    ...))
</code>

<eval id="4ca78d9fcaa2b">
(sierpinski-dreieck 200 6)
</eval>
</td>
</tr>
</table>

== Die Koch-Schneeflocke ==

Der schwedische Mathematiker '''Helge von Koch''' (* 25. Januar 1870; † 11. März 1924) stellte im Jahr 1904 einen stetigen Graphen vor, der an keiner Stelle differenzierbar ist.
Die sogenannte Koch-Schneeflocke setzt sich aus drei dieser Koch-Kurven zusammen, die auf den Seiten eines gleichseitigen Dreiecks angeordnet sind:

<blockquote>[[Bild: Kochkurve1.GIF]]</blockquote>

'''Implementation:'''

<table cellspacing="0" cellpadding="2">
<tr>
<td valign="top">
<canvas w="380" h="400"></canvas>
</td>
<td valign="top" width="100%">

<code id="4ca83081adee2">
(define koch
  (lambda (turtle len n)
    ...))

(define koch-schneeflocke
  (lambda (len n)
    (clear canvas2)
    (move turtle2 150 270)
    ...))
</code>

<eval id="4ca794259d7af">
(koch-schneeflocke 200 5)
</eval>
</td>
</tr>
</table>

Zurück zu [[Grundlagen der funktionsorientierten Programmierung mit SCHEME/Rekursionen|Rekursionen]].