1 Fraktale Julia-Mengen die Mandelbrotmenge komplexe Abbildungen realisiert als JAVA-Applet.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
Kapselung , toString , equals , Java API
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Ein Beispiel in Java.
Konstruktoren.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Imperative Programmierung Funktionen und Parameter
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Bestimmung des ggT zweier Zahlen
© 2003 Pohlig - Taulien Tanz der Turtles (Java) 1 Tanz der Turtles.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Applets Java für’s Web.
1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Die Welt der Fraktale Eine Kurzeinführung.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
2.4 Rekursion Klassifikation und Beispiele
Unterprogramme in JAVA
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
EPROG Tutorium #3 Philipp Effenberger
Learning By Doing Übungen GPanel Quadratfenster mit pixelunabhängigen Windowkoordinaten (doubles) Zweckmässige Standardwerte (defaults) 01 x 0 1 y // WbzEx5.java.
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Benutzeroberflächen und Graphik
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Informationssysteme Technische Universität Braunschweig Institut für Informationssysteme Technische Universität Braunschweig Verdrängung von.
Schnittstellen.
JAVA lernen: Methoden.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Felder in Java.
Grundkurs Informatik mit Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
 Präsentation transkript:

1 Fraktale Julia-Mengen die Mandelbrotmenge komplexe Abbildungen realisiert als JAVA-Applet

2 z z 2 z=2+i Beispiel 1: z=2+i Erinnerung: Komplexe Zahlen

3 z z 2

4 Problem: Jede komplexe Zahl verhält sich unter der Abbildung z z 2 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.

5 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:

6 Die Julia-Gefangenenpunktmenge für die Konstante C= i nach Iterationen 6

7 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

8 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

9 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 alternierende Farben, ggf. Grundfarben

10 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"); } }

11 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

12 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

13 Der Pixelspiel-Algorithmus public 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); //Mandelbrot while ((z.Betrag()<Grenzbetrag)&&(iteration<IterationDepth)) { z=QuadMap(z); iteration++; } iteration=0; if (z.Betrag()<Grenzbetrag) g.fillRect(x,y,1,1); }

14 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

15

16

17