Fraktale

17
1 www.tfh-berlin.de/~s680132 StefanAdolf@tfh- berlin.de Fraktale Julia-Mengen die Mandelbrotmenge komplexe Abbildungen realisiert als JAVA-Applet

description

Fraktale. Julia-Mengen die Mandelbrotmenge komplexe Abbildungen. realisiert als JAVA-Applet. Erinnerung: Komplexe Zahlen. z z 2 Beispiel 1: z=2+i. z z 2. Problem: Jede komplexe Zahl verhält sich unter der Abbildung z z 2 anders. Welche Zahlen liegen in einem bestimmten Radius ? - PowerPoint PPT Presentation

Transcript of Fraktale

Page 1: Fraktale

1www.tfh-berlin.de/~s680132 [email protected]

Fraktale Julia-Mengen

die Mandelbrotmenge

komplexe Abbildungen

realisiert als JAVA-Applet

Page 2: Fraktale

2www.tfh-berlin.de/~s680132 [email protected]

z z2

Beispiel 1: z=2+iz=2+i

Erinnerung: Komplexe Zahlen

Page 3: Fraktale

3www.tfh-berlin.de/~s680132 [email protected]

z z2

Page 4: Fraktale

4www.tfh-berlin.de/~s680132 [email protected]

Problem:

Jede komplexe Zahl verhält sich unter der Abbildungz z2 anders.

Welche Zahlen liegen in einem bestimmten Radius ?

Welche Zahlen „fliegen“ bei einer bestimmten Anzahl von Hintereinanderausführungen der Abbildung aus jedem Radius heraus ?

Hintereinanderausführung einer Abbildung wird als „Iteration“ der Abbildung bezeichnet.

Page 5: Fraktale

5www.tfh-berlin.de/~s680132 [email protected]

Unterteilung der komplexen Zahlenebene in zwei Bereiche:

Punkte, die nach einer bestimmten Anzahl n von Iterationen innerhalb eines bestimmten Radius liegen (Gefangenenpunktmenge)

Punkte, die außerhalb dieses Radius liegen(Fluchtpunktmenge)

Idee des Mathematikers Julia um 1900:

Page 6: Fraktale

6www.tfh-berlin.de/~s680132 [email protected]

Die Julia-Gefangenenpunktmenge für die Konstante C=-0.5 + 0.5i

nach 0 1 2 18 Iterationen6

Page 7: Fraktale

7www.tfh-berlin.de/~s680132 [email protected]

Ansätze der Realisierung

a) Realisierung als Applikation

schlechte Portabilität ins Internet

JAVA-Viewer nötig zum Berechnen der Fraktale

b) Realisierung als Applet

von jeder Maschine aus ausführbar (im Browser)

das Programm kann beliebig weitergegeben werden

c) Gleichzeitige Realisierung von a) und b)

Konflikte zwischen Applet und Frames müssen abgefangen werden höherer Programmieraufwand

Page 8: Fraktale

8www.tfh-berlin.de/~s680132 [email protected]

Realisierung als Applet

Interaktivität des Programms i.A. auf zwei Arten möglich:

a) AWT

komfortable Steuerung wie in Anwendungen

Programm erfordert jedoch hohe Rechenleistung, und da nicht multithreaded programmiert wurde, können während des Zeichenvorgangs keine Events bearbeitet werden !!

b) Parameterübergabe aus HTML-Code

Individuelle Einstellung möglich, jedoch nur eingeschränkte Interaktivität

Dennoch zur Zeit einzige sinnvolle Lösung

Page 9: Fraktale

9www.tfh-berlin.de/~s680132 [email protected]

Parameter

String [][] info ={

{PARAM_CRe,"double","Konstante, Realteil"},{PARAM_CIm, "double" , "Konstante Imaginärteil"},{PARAM_ItDepth, "int" , "Iterationstiefe"},{PARAM_ItBegin, "int","Anfangsiterationszahl"},{PARAM_ItStep,"int","Iterationsschrittweite"},{PARAM_xshift,"double","Verschiebung in Re-Richtung"},{PARAM_yshift,"double","Verschiebung in Im-Richtung"},{PARAM_xscale,"double","Zoomfaktor x-Aspekt"},{PARAM_yscale,"double","Zoomfaktor y-Aspekt"},{PARAM_Colors,"boolean","jeder zweite Schritt Schwarz"}

};

Konstante C, benötigt C.Re und C.Im

Iterationstiefe, ggf. Iterationsbeginn und Schrittweite

Skalierungs- und Translationsfaktoren zum Verschieben der Zeichnung

Farbenschalter: Farbverlauf oder alternierendeFarben, ggf. Grundfarben

Page 10: Fraktale

10www.tfh-berlin.de/~s680132 [email protected]

Klasse CNumber

class CNumber // COMPLEX NUMBERS{

public double Re;public double Im;

CNumber (){

this(0.0,0.0);}

CNumber (double r, double i){

Re=r;Im=i;

}

public double Betrag(){

return Math.sqrt(Re*Re+Im*Im);}public String toString(){ return (Re+"+"+Im+"i"); }}

Page 11: Fraktale

11www.tfh-berlin.de/~s680132 [email protected]

public void paint(Graphics g){

double farbwechsel=0;for (int i=iteration; i<totalDepth;i+=itStep){if (Cycle==true)

{ farbwechsel+=(255.0d*(1.0d/(totalDepth))); farbe =new Color((int)(farbwechsel),0,0);}else {

if (i%2==0){ farbe=Color.black; }else{ farbe=Color.red; }

}g.setColor(farbe);showStatus("Iteration Nr."+i+

"; Colormode:"+Cycle);Julia (i,g);

}}

Paint

Page 12: Fraktale

12www.tfh-berlin.de/~s680132 [email protected]

Colormode : Schattiert oder zweifarbig ?

schattierte Darstellung:

mit jedem Iterationsschritt wird der R-Anteil der Zeichenfarbe um 1 / totalDepth erhöht

Cycle-Darstellung:

jeder zweite Iterations-schritt wird schwarz gemalt

Page 13: Fraktale

13www.tfh-berlin.de/~s680132 [email protected]

Der Pixelspiel-Algorithmuspublic void Julia(int IterationDepth,Graphics g ){

if (C.Betrag()>2.0) Grenzbetrag=C.Betrag();int iteration=0;for (int y=0;y<600;y++){

for (int x=0; x<600;x++){

CNumber z=new CNumber();z.Re=(xscale*x)+xshift; z.Im=(yscale*y)+yshift;

// z=QuadMap(Null); //Mandelbrotwhile

((z.Betrag()<Grenzbetrag)&&(iteration<IterationDepth)){

z=QuadMap(z);iteration++;

}iteration=0;if (z.Betrag()<Grenzbetrag)

g.fillRect(x,y,1,1);

}}

}

Page 14: Fraktale

14www.tfh-berlin.de/~s680132 [email protected]

Erweiterung: die Mandelbrotmenge

Betrachtung der Parameter, bzw. der verschiedenen Abbildungen, die eine Julia-Menge erzeugen.

M ={C | Julia-Menge ist stetig für C}

Startwert der Iteration wird als C gewählt und in die Abbildung mit übernommen

Die Mandelbrotmenge ist eine „Landkarte“ für stetige (zusammenhängende) Julia-Mengen

Page 15: Fraktale

15www.tfh-berlin.de/~s680132 [email protected]

Page 16: Fraktale

16www.tfh-berlin.de/~s680132 [email protected]

Page 17: Fraktale

17www.tfh-berlin.de/~s680132 [email protected]