3D Mandelbulb ist nur überfahrenes Pokemon

Holla! Jetzt hat man mir gesagt, ich solle mich doch mal ans richtige 3D Mandelbulb heran wagen. Mein erster Versuch erinnert allerdings eher an ein überfahrenes Pokemon:

Mandelbulb Version 1

Das Ergebnis ist so deprimierend, dass ich wohl die Finger davon lasse. Wie bekomme ich da nette Farben druff? Wie mache ich eine Fläche auf diese Punktwolke? Warum ist die Form so seltsam?

Im Kern laufe ich in openGL den Raum in x,y und z Achse ab. Jeder x,y und z Wert wird von mir in eine Fließkommazahl von -2.0 bis +2.0 umgewandelt (x,y,z -> a,b,c) und dann mache ich das, was mathematisch in etwa Zn+1 = Zn2 + P(a,b,c) mit Z0=0 bedeutet:

Zx = Zy = Zz = 0;
for (n=0; n<250; n++) {
r2 = Zx*Zx + Zy*Zy + Zz*Zz;
if (r2 > 3.0) return -1;
theta = atan(Zz / sqrt(Zx*Zx + Zy*Zy));
phi = atan(Zy / Zx);
Zx = r2 * cos(2.0*phi) * cos(2.0*theta) + Pa;
Zy = r2 * sin(2.0*phi) * cos(2.0*theta) + Pb;
Zz = r2 * sin(2.0*theta) + Pc;
}
return (r2/3.0)*255.0;

Ist der Rückgabe-Wert meiner Funktion negativ, zeige ich den Punkt nicht. Ist er aber Positiv, dann wird aus dem Quadrat der Länge des Vektors (r2) ein gelb-Farbwert für den Punkt in xyz genommen.

Hach, ist das schon wieder spät geworden...

Dieser Beitrag ist Teil einer Artikelserie:

  1. Schon wieder: Mandelbrot mit FLTK (19. Februar 2016)
  2. 3D Mandelbulb ist nur überfahrenes Pokemon (12. Februar 2016)
  3. Mandelbrotmenge in 3D (4. Februar 2016)
  4. Ein gutes Programm so richtig verhunzen (4. Februar 2016)

1 Gedanke zu “3D Mandelbulb ist nur überfahrenes Pokemon

Schreibe einen Kommentar