![]() |
Universität des Saarlandes Fachbereich 14 - Informatik Dr. S. Schirra, Dr. E. Schömer |
![]() |
SOFTWAREPRAKTIKUM | WS 99/00 |
Schreiben Sie ein kleines Programm, das zwei Zahlen einliest und Summe und Mittelwert der beiden Zahlen ausdruckt.
Korrigieren Sie den Code in gcd_main.C, gcd.h und gcd.C. Benuzten Sie ein makefile und gegebenenfalls einen Debugger.
Entwerfen und Implementieren Sie eine Klasse Line für Geraden. Ein Objekt der Klasse Line soll aus zwei Objekten vom dem aus der Vorlesung bekannten Typ Point konstruiert werden können. Ebenso soll eine Line aus einem Punkt und zwei float Werten konstruiert werden können. Ferner soll es eine Memberfunktion float Line::distance(const Point&) geben, die den Abstand eines Punktes zu einer Geraden berechnet.
Hinweis:
Der Abstand d eines Punktes
von einer Gerade durch die Punkte
und
ist gegeben durch:
Erweitern Sie die Klasse Point um Memberfunktionen float Point::distance(const Point&) und float Point::distance(const Line&), die den Abstand eines Punktes zu einem anderen Punkt bzw. einer Geraden berechnen.
Wir wollen die fraktale Struktur der Mandelbrot und der Julia Mengen als Graustufen Bilder visualisieren, indem wir das Divergenzverhalten der iterierten Abbildung zi+1 = zi2+c in der komplexen Zahlenebene untersuchen.
Zur Berechnung der Mandelbrot Menge setzen wir z0=0 und bestimmen
für jedes c aus dem Definitionsbereich die Zahl k(c) der
Iterationen, so dass zk(c) erstmals außerhalb des Kreises
um den Ursprung mit Radius 2 liegt:
Für
und
erhält man
folgendes Ergebnis:
Zur Berechnung von Julia Mengen legt man c fest und lässt z0über einen gewissen Bereich variieren. Die Funktionen k und fhängen nun nicht mehr von c ab, sondern von z0. Einige interessante Ergebnisse erhält man für
Benutzen Sie die Klasse double_complex aus <complex>
zur Realisierung der Arithmetik
über den komplexen Zahlen und orientieren Sie sich zur Visualisierung
an dem Beispielprogramm grey.C.