Cheatah: Mathematik: Fraktale

Beitrag lesen

Hi,

Das Programm gefällt mir wirklich sehr gut; macht richtig Spaß mal ein paar Sachen auszuprobieren :-)

freut mich :-)

Ich habe mich zwar nie richtig mit dem Sinn und Zweck von Fraktalen beschäftigt, außer damals mal kurz im Physik-LK, da war mal was mit der Chaos-Theorie, falls ich das noch richtig im Kopf habe ?!

Ja, Chaos und Fraktale sind eng miteinander verknüpft. Was ich verarbeitet habe ist die sog. Mandelbrotmenge ("Apfelmännchen"), benannt nach Benoit Mandelbrot, der die Formel eigentlich als erstes Fraktal erstellt hat - lange bevor es Computer gab.

Damals hatte ich auf meinem 486 ein kleines DOS Programm, ich glaube das hieß fractint oder so ??? Damit konnte man alle möglichen Formen berechen und umformen, und was weiß ich noch alles damit anstellen (richtig schön um sich auszutoben). Es gab sogar ein paar vorgegeben Koordinaten, die man nur noch berechnen mußte ... hab ich gerne gemacht, eins davon hieß Kermit und sah wirklich fast wie ein Frosch aus (roter Hintergrund mit grünem Kopf), der große Nachteil: die Berechnung hatte ca. 8 Stunden gedauert :-(  (486-25 mit 4MB ...).

Ja, Fractint kenne ich, gibt's auch als Windows-Programm.

Ich müßte das noch irgendwo auf einer alten Disk haben, werde es mir heute abend wohl noch mal auf die Platte spielen :-) Aber deine Umsetzung ist wirklich super geworden !
Nochmals alle Hochachtung !

Vielen Dank :-)

P.S.: Bin auch die Erweiterungen, sowie den Code gespannt :-)

Die Berechnung ist eigentlich sehr einfach:

$xstep = ($x2-$x1)/$breite;
$ystep = ($y2-$y1)/$hoehe;
$ypos = $y1;
for ($y=0; $y<$hoehe; $y++) {
   $xpos = $x1;
   $ypos += $ystep;
   for ($x=0; $x<$breite; $x++) {
      $xpos += $xstep;
      $step=0; $zx=0; $zy=0; $decided=0;
      while (++$step <= $tiefe && !$decided) {
         $zx2 = $zx*$zx - $zy*$zy + $xpos;
         $zy = 2*$zx*$zy + $ypos;
         $zx = $zx2;
         $dist = $zx*$zx+$zy*$zy;
         if ($dist > 4) { $decided = 1; }
      }
      if ($decided) { print &setpixel($x,$y,($step-1)%$noc); }
   }
}

Davor und danach sind noch ein paar andere Dinge (&setpixel setzt nur einen Pixel in der entsprechenden Farbe, $noc ist "NumberOfColors"), aber dies ist die grundlegende, noch kaum optimierte Formel. Wenn ich den Code optimiert habe, werde ich ihn komplett posten!

Cheatah