Re: So funktioniert das Universum
Geschrieben von Gabi am 16. Januar 2003 16:41:33:
Als Antwort auf: Re: So funktioniert das Universum geschrieben von Torsten am 15. Januar 2003 20:49:44:
>vielen Dank. Ich hoffe, Dich stört die Verwendung Deiner Bilder nicht - ich gebe ja auch immer brav die Quelle an.
Die Bilder dürfen frei verwendet werden.
>Ich wollte ursprünglich die "Blumenkübel" (oder wie die heißen) nehmen, aber möglicherweise sind die Daten beschädigt.
Hol sie Dir hier in groß:
http://www.aladin24.de/frakt3/par/serieB.htm
oder hier(unten das kleinere Bild, oben Applet):
http://www.alveolara.de/gamePict/15/151-24393.htm>Wenn das kein Geheimnis ist: wie lauten die Formeln zu den Bildern? Ich behaupte hier locker, sie seien einfach (erst recht gemessen an der Komplexität der Ergebnisse), aber das ist rein intuitiv aufgrund meines oberflächlichen Wissens über Fraktale.
Quelltext Java (für Neptun-Bild und Blumenschalen usw., übrige Daten siehe Quellkode von
http://www.alveolara.de/gamePict/14/149-75661.htm ):......
for (iy=0; iy < iye; iy++) { // Neue Zeilen
by -= swy; bx = bx0; //swy = Schrittweite zum nächsten Pixel in y-Richtung
for (ix=0; (ix < ixe); ix++) { // Neuer Punkt in Zeile
bx += swx; bp += swx; //swx = Schrittweite zum nächsten Pixel in x-Richtung
ianz = 0;
if(julia)
{x = bx; y = by; xalt = x; yalt = y; }
else
{Cx = bx; Cy = by; x = 0; y = 0; xalt = 0; yalt = 0; };abbr = false; idiverg = false; idivNull=false;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
do { // Neue Iterationen
ianz++;
if (ianz > ianzmax) abbr = true;; // Abbruch wegen Chaos
xalt = x; yalt = y;
//*************************************
// eigentliche Gleichung/Schleifeninhalt pro Iteration:
r1 = Math.sqrt(x*x+y*y); f1 = phasK(x,y);noerr = true;
if (r1 < 1E-300) noerr = false; //error
if (noerr)
{
r = Math.pow(r1, x) * Math.exp(-f1 * y);
f = f1 * x + y * Math.log(r1);
x = r * Math.cos(f);
y = r * Math.sin(f);
}x = x + Cx;
y = y + Cy;
//*************************************if ( (Math.abs(x) + Math.abs(y) ) > maxabs) {idiverg = true; abbr = true;}
// Abbruch wegen Divergenz
dd = Math.abs(xalt - x) + Math.abs(yalt - y);}
while ((dd > genau) & (!abbr)); // Ende der do - Schleife => Neue Iteration
// Ende Punkt
....... Farben-Berechnung
}
}//__________________Unterprogramm_________________________
double phasK( double x, double y)
{
double f;if (x == 0)
{ f = PIH; }
else
{ f = Math.atan(Math.abs(y/x)); }if (Math.abs(y)<1E-300)
{f = 0;
if ((x < 0) & (y < 0) ) f = -PI;
if ((x < 0) & (y > 0) ) f = PI; }
else
{ if ((x < 0) & (y > 0) ) f = PI-f;
if ((x < 0) & (y < 0) ) f = f-PI;
if ((x >= 0) & (y < 0) ) f = -f; }return f;
}
//____________________________________________________
Es ist halt Z=Z^Z + C .
Die Kompliziertheit liegt an den menschengemachten komplexen Zahlen, die sind die Monster.MfG
Gabi