Hi, also ich brauch mal eure Hilfe. Ich steig bei soviel Mathematik nich mehr durch.
Also das is meine Klasse mit den komplexen Zahlen, wie wir Sie machen sollten.
Nun sollen wir unter Verwendung der oberen Klasse, der Klassen "java.awt.Button, java.awt.TextField und einer entsprechenden Wrapper-Klasse 2 kurze Apletts der Juliamenge und Mandelbrotmenge programmieren.
Das klingt ja alles noch einigermaßen ok :lol:
Aber jetzt kommt das was ich nicht verstehe....
Alle Benutzereingaben werden in einer eigenen Klasse zusammengefasst.
· Die Hintergrundfarbe ist einzugeben (byte rH, gH, bH).
· Die Startwerte -2 <= sx <= 2 und -2 <= sy <= 2 sowie
die Endwerte -2 <= ex <= 2 und -2 <= ey <= 2 der graphischen Darstellung sind vom Benutzer einzugeben (double).
· Der Skalierungsfaktor der Darstellung 100 <= f <= 1000 ist vom Benutzer einzugeben.
Die Vordergrundfarbe wird auf schwarz festgelegt (rV = 0, gV = 0, bV = 0).
Die Anzahl der maximalen Iterationen n für einen Punkt wird auf 100 festgelegt.
Die Schranke z wird auf 4 festgelegt.
Für die Koordinatenpaare (x | y) gilt dann sx <= x <= ex und sy <= y <= ey. Diese müssen in die entsprechenden, fortlaufenden Pixel-Koordinaten des graphischen Rechtecks umgerechnet werden (zweidimensionale Koordinatentransformation).
Julia-Menge:
· Die Konstanten -2 <= cx <= 2 und -2 <= cy <= 2 sind vom Benutzer zusätzlich einzugeben (double).
· Der Hintergrund der Graphik wird mit der Hintergrundfarbe gefüllt.
· z0 wird immer auf (x | y) gesetzt.
· Alle Punkte im Rechteck für die |zN|² < z gilt (also betragsquadratZn (n) < z), werden in der Vordergrundfarbe gezeichnet.
Mandelbrot-Menge:
· cx = x und cy = y.
· z0 wird immer auf (0 | 0) gesetzt.
· Wenn die Iterationszahl n+1 beträgt (also iterationszahlBisSchrankeZ (z, n) = (n+1)),
werden die entsprechenden Punkte in der Vordergrundfarbe gezeichnet. Andernfalls wird
eine geeignete Farbe in Abhängigkeit von der zurückgegebenen Iterationszahl, die dann
zwischen 1 und n liegt, und der eingegebenen Hintergrundfarbe bestimmt.
Alle Eingaben sind vor der Weiterverarbeitung zu validieren !
Also das ist die grobe Beschreibung der folgenden Aufgabe zu 1
Ihr sollt mir da jetzt nicht die Aufgabe lösen, aber ich wäre schon dankbar für ein paar codeansätze, was ich da machen soll. Mein Anti-Mathe Hirn streikt da. Saß da die letzten 2 nächte dran aber ich raffs nich :noe:
DANKE!
Also das is meine Klasse mit den komplexen Zahlen, wie wir Sie machen sollten.
Java:
public class KomplexeZahl
{
// Speichert den Realteil
public double x;
// Speichert den Imaginärteil
public double y;
/**
* Konstruktor
* @param r
* @param s
*/
public KomplexeZahl(double r, double s)
{
x = r;
y = s;
}
/**
* Private Methode zur Addition von zwei komplexen Zahlen.
*
* @param c
* @return
*/
public KomplexeZahl summe(KomplexeZahl c)
{
return new KomplexeZahl(x + c.x, y + c.y);
}
/**
* Private Methode zur Multiplikation von zwei komplexen Zahlen.
*
* @param c
* @return KomplexeZahl
*/
private KomplexeZahl produkt(KomplexeZahl c)
{
return new KomplexeZahl(x*c.x - y*c.y, x*c.y + y*c.x);
}
/**
*
* @return Betragsquadrat |Zn^2|
*/
public double betragsquadrat() {
return x*x + y*y;
}
/**
* Methode zum Ausfuehren des Betragsquadrats bis n.
* Also |Zn|^2.
*
* KomplexeZahl z = new KomplexeZahl(0,0); KomplexeZahl c = new
* KomplexeZahl(cX,cY); double z100 = z.betragsQuadratZn(100, c);
*
* @param n
* vom Typ int
* @return
*/
public double betragsQuadratZn(int n, KomplexeZahl c)
{
double aus = 0;
int i = 0;
while (i < n)
{
// Plynomfolge zn = z0^2+c
produkt(new KomplexeZahl(x, y));
summe(c);
i++;
}
// Betragsquadrat
aus = betragsquadrat();
return aus;
}
/**
*
* @param z
* double : Schranke
* @param n
* int : Anzahl der maximalen Iterationen
* @param c
* KomplexeZahl fuer das naechste Polynomglied
*
* @return Ganzzahlige Ausgabe der benoetigten Iterationen um ein einen Wert
* groesser gleich Schranke z zu
*
*
*/
public int iterationszahlBisSchrankeZ(double schrankeZ, int n,
KomplexeZahl c)
{
int i = 0;
double betragsquadrat = 0; //Anzahl der Iterationen
KomplexeZahl calc = new KomplexeZahl(0, 0); // (0,0), weil Z0 -Mandelbrot bei (0,0)
//Solange das Betragsquadrat(i) kleiner z und
while (betragsquadrat <= schrankeZ && i < n)
{
calc = produkt(this).summe(c);
x = calc.x;
y = calc.y;
betragsquadrat = c.betragsquadrat();
i++;
}
// Mehr Iterationen als n um z zu erreichen wurden benoetigt.
if (i == n)
{
i = n + 1;
}
return i;
}
}
Nun sollen wir unter Verwendung der oberen Klasse, der Klassen "java.awt.Button, java.awt.TextField und einer entsprechenden Wrapper-Klasse 2 kurze Apletts der Juliamenge und Mandelbrotmenge programmieren.
Das klingt ja alles noch einigermaßen ok :lol:
Aber jetzt kommt das was ich nicht verstehe....
Alle Benutzereingaben werden in einer eigenen Klasse zusammengefasst.
· Die Hintergrundfarbe ist einzugeben (byte rH, gH, bH).
· Die Startwerte -2 <= sx <= 2 und -2 <= sy <= 2 sowie
die Endwerte -2 <= ex <= 2 und -2 <= ey <= 2 der graphischen Darstellung sind vom Benutzer einzugeben (double).
· Der Skalierungsfaktor der Darstellung 100 <= f <= 1000 ist vom Benutzer einzugeben.
Die Vordergrundfarbe wird auf schwarz festgelegt (rV = 0, gV = 0, bV = 0).
Die Anzahl der maximalen Iterationen n für einen Punkt wird auf 100 festgelegt.
Die Schranke z wird auf 4 festgelegt.
Für die Koordinatenpaare (x | y) gilt dann sx <= x <= ex und sy <= y <= ey. Diese müssen in die entsprechenden, fortlaufenden Pixel-Koordinaten des graphischen Rechtecks umgerechnet werden (zweidimensionale Koordinatentransformation).
Julia-Menge:
· Die Konstanten -2 <= cx <= 2 und -2 <= cy <= 2 sind vom Benutzer zusätzlich einzugeben (double).
· Der Hintergrund der Graphik wird mit der Hintergrundfarbe gefüllt.
· z0 wird immer auf (x | y) gesetzt.
· Alle Punkte im Rechteck für die |zN|² < z gilt (also betragsquadratZn (n) < z), werden in der Vordergrundfarbe gezeichnet.
Mandelbrot-Menge:
· cx = x und cy = y.
· z0 wird immer auf (0 | 0) gesetzt.
· Wenn die Iterationszahl n+1 beträgt (also iterationszahlBisSchrankeZ (z, n) = (n+1)),
werden die entsprechenden Punkte in der Vordergrundfarbe gezeichnet. Andernfalls wird
eine geeignete Farbe in Abhängigkeit von der zurückgegebenen Iterationszahl, die dann
zwischen 1 und n liegt, und der eingegebenen Hintergrundfarbe bestimmt.
Alle Eingaben sind vor der Weiterverarbeitung zu validieren !
Also das ist die grobe Beschreibung der folgenden Aufgabe zu 1
Ihr sollt mir da jetzt nicht die Aufgabe lösen, aber ich wäre schon dankbar für ein paar codeansätze, was ich da machen soll. Mein Anti-Mathe Hirn streikt da. Saß da die letzten 2 nächte dran aber ich raffs nich :noe:
DANKE!