Mandelbrötchen

Das Mandelbrötchen, auch Apfelmännchen oder Mandelbrotmenge genannt (nach dem französisch-amerikanischen Mathematiker Benoît B. Mandelbrot), ist der Star unter den Fraktalen. Sie ist mathematisch gesprochen, die Menge der Anfangspunkt z0 in der komplexen Ebene, für die die Folge

zn + 1 = zn2 + c

beschränkt bleibt. Man kann beweisen, daß die Folge dann nicht beschränkt bleibt, wenn

abs(zn) > 2

für irgendeinen Index n gilt. Wir können damit aber nur exakt feststellen, daß ein Punkt nicht zur Mandelbrotmenge gehört. Für den eigentlichen Bereich muß man, je nach Ausschnittvergrößerung, die Iterationsvariable entsprechend höher setzen.

image

Das Processing-Programm ist ziemlich allgemein gehalten. Durch Änderung der Variablen links, rechts, oben, unten und der Iterationsvariable iter kann man alle Bereiche der Mandelbrotmenge erkunden.

Lediglich die Farbgebung ist ziemlich anspruchslos. Andere bekommen hier buntere Bildchen hin. Ich habe aber noch keine Idee, was ich hier einsetzen könnte, da muß ich mich erst noch einmal mehr mit den Color-Möglichkeiten von Processing beschäftigen.

Quellcode

// Ein einfaches Rezept für ein Apfelmännchen
// nach: Karl-Heinz Becker, Michael Dörfler: Rezept für ein Apfelmännchen,
// Kursbuch 98 (1989), S. 39 - 41

int iter   = 20;
float grenze = 2.0;

float links  = -0.75;
float rechts = 2.25;
float unten  = -1.5;
float oben   = 1.5;

int hoehe = 400;
int breite = 400;

color c;

void setup () {
  size (hoehe, breite);
  background(0);
  drawIt();
}

void drawIt() {
  int i;
  float zIm, zRe, cIm, cRe, zRhoch2, zIhoch2;

  for (int x = 0; x < breite; x++) {
    cRe = links + x*(rechts - links)/breite;

    for (int y = 0; y < hoehe; y++) {
      cIm = unten + y*(oben - unten)/hoehe;
      zRe = 0;
      zIm = 0;
      zRhoch2 = 0;
      zIhoch2= 0;
      i = 0;
      do {
        zIm     = 2*zIm*zRe - cIm;
        zRe     = zRhoch2 - zIhoch2 - cRe;
        zRhoch2 = zRe*zRe;
        zIhoch2 = zIm*zIm;
        i++;       
      }
      while ((i < iter || ((zRhoch2 + zRhoch2) > grenze)));

      if ((zRhoch2 + zIhoch2) <= grenze) {
        c = color(200, 20, 20);
      }
      else {
        c = color(255 - i*32%255, 255 - i*32%255, 255 - i*32%255);
      }
      set(x, y, c);
    }
  }
  print ("I did it, Babe!");
}

Literatur




Sie sind hier: StartProgrammierungCreative CodingProcessing → mandelbroetchen.txt


Suche

Werkzeuge