MATHEMATISCHES INSTITUT DER UNIVERSITÄT MÜNCHEN Dr. W. Spann, G. Kleen WS 2022/2023

Programmieren II für Studierende der Mathematik

Aufgabe 9

Bei der Zentralprojektion auf eine Ebene, die vom Betrachterstandpunkt (x_{c}, y_{c}, z_{c}) den Abstand 1 hat, gelten für die Abbildung (x, y, z) → (u, v) folgende Gleichungen:

a := x_{m} − x_{c}  b := y_{m} − y_{c}  c := z_{m} − z_{c}
p := \sqrt{a^{2} + b^{2}} q := \sqrt{a^{2} + b^{2} + c^{2}}
s := \frac{b}{p}  t := \frac{a}{p}  falls p ≠ 0
s := 1  t := 0  falls p = 0

r := a(x − x_{c}) + b(y − y_{c}) + c(z − z_{c})

\begin{matrix}u = \frac{sq(x − x_{c}) − tq(y − y_{c})}{r} \\ v = \frac{−tc(x − x_{c}) − sc(y − y_{c}) + p(z − z_{c})}{r} \end{matrix}

Dabei wird die Normalenrichtung zur Projektionsebene durch (x_{c}, y_{c}, z_{c}) und einen weiteren Punkt (x_{m}, y_{m}, z_{m}) definiert und soll nicht parallel zur z-Achse sein. Die v-Achse in der Projektionsebene verläuft parallel zum Bild der z-Achse.

(a) Erstellen Sie ein Programm, das nach diesen Formeln mit (x_{m}, y_{m}, z_{m}) = 0 die Breitenkreise ψ = −75^{∘}, 75^{∘}(15^{∘}) und den Umriß einer Kugel mit Radius R und Mittelpunkt 0 (ggf. geeignet skaliert) perspektivisch abbildet (Drahtgittermodell) und entsprechende SVG-Anweisungen in eine Datei schreibt. Hinweise: Ein Punkt auf der Kugeloberfläche mit Länge φ (östl. Länge positiv) und Breite ψ hat die kartesischen Koordinaten x = R cos(ψ) cos(φ), y = R cos(ψ) sin(φ),z = R sin(ψ).

Der Kugelumriß ist unskaliert ein Kreis mit Radius \frac{R}{\sqrt{D^{2} − R^{2}}} , worin D =

\sqrt{x_{C}^{2} + y_{C}^{2} + z_{C}^{2}} = q.

(b) Erweitern Sie das Programm aus (a) um Längenkreise und unterdrücken Sie die Ausgabe verdeckter Kugelteile. Hinweis: Punkte (x, y, z) auf der Kugeloberfläche mit |(x, y, z) − (x_{c}, y_{c}, z_{c})| ≤ \sqrt{D^{2} − R^{2}} sind sichtbar.

(c) Erweitern Sie das Programm aus (b) um die Küstenlinien des Festlands. Die erforderlichen Daten stehen in der Datei data.mod.txt. (Datensatzformat: Zahl der Breite/Längepaare einer geschlossenen Küstenlinie, gefolgt von Zeilen aus jeweils höchsten 5 Breite/Längepaaren). Bem.: data.mod.txt wurde aus einem Datensatz des National Center of Atmospheric Research (USA) erzeugt.

Bitte wenden!

(d)^{∗} Erstellen Sie unter Verwendung von (c) ein Qt5-Programm, das in der linken Hälfte die SVG-Graphik anzeigt und in der rechten Hälfte Eingabefenster (mit Beschriftung) für die Daten (Erdradius, Abstand, geographische Länge und Breite) und einen Update-Knopf enthält. Für den Erdradius und den Abstand soll ein sinnvoller Wert (z.B. R = 1, D = 5) voreingestellt sein.

Bearbeitungszeitraum: bis Donnerstag, 19.01.2023, 16^{00}