commit 2da4435402b1bd61034fb8d6a618eaf4bc6faf7d
parent fe3dfc2802c4b080ca62a964dc7769f0257ac5bc
Author: Orangerot <purple@orangerot.dev>
Date: Mon, 23 Jun 2025 00:28:09 +0200
feat(ggg): exam solutions for chapter 4
Diffstat:
| M | ggg/ggg-cards.typ | | | 220 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ |
1 file changed, 204 insertions(+), 16 deletions(-)
diff --git a/ggg/ggg-cards.typ b/ggg/ggg-cards.typ
@@ -6,6 +6,8 @@
#set math.mat(delim: "[")
#set math.vec(delim: "[")
+#let TODO(args) = text(stroke: red, [TODO: #args])
+
#let transpose(t)={
let output=t.at(0).zip(..t.slice(1))
output
@@ -1192,54 +1194,175 @@ Ebene und die zweier Geraden berechnen?],
question: [Was sind homogene Koordinten, Fernpunkte und der
Unpunkt?],
answer: [
-
+ Ein Punkt $x = vec(x_1, dots.v, x_n) in cal(A)^n$ hat die homogenen
+ Koordinatnvektoren $bb(x) = vec(1, x) xi, xi != 0$, die die Vielfachen des
+ erweiterten Koordinatenvektors von $x$ sind.
+
+ Die Mengen der Vielfachen eines Vektors $v$ ohne den Nullvektor $o$ werden
+ als ein (einziger) Fern- oder uneigentlicher Punkt mit den homogenen
+ Koordinatenvektoren $bb(v) = vec(0, v) phi, phi != 0$ betrachtet. Jedoch
+ zählt der Unpunkt $bb(o) = vec(0, o) phi, phi != 0$ nicht zu den
+ Fernpunkten.
+
+ Vielfache eines homogenen Koordinatenvektors $bb(x)$ stellen denselben Punkt
+ $x$ dar. Wir bezeichnen dies mit $bb(x) ~ bb(y) :<=> bb(x) = bb(y)phi, phi
+ != 0$, und $bb(x) lt.tri x$
])
#card(
question: [Geben Sie die Gleichungsdarstellung einer Hyperebene in
erweiterten Koordinaten an und leiten Sie daraus die
homogene Darstellung ab!],
answer: [
-
+ Eine Hyperebene $cal(H): u^t x + u_0 = mat(u_0, u^t) vec(1,x) = 0$ hat die
+ homogene Darstellung $bb(u)^t bb(x) = 0$.
])
#card(
question: [Was ist die Fernhyperebene?],
answer: [
-
-])
+ Die projektive Hyperebene $cal(F): [1 0 ... 0] bb(x) = 0$ besteht aus den
+ Fernpunkten des $cal(A)^n$. Sie heißt Fern(hyper)ebene oder im $cal(A)^2$
+ auch Ferngerade.
+] )
== Zentralprojektion
#card(
question: [Was ist eine Zentralprojektion?],
answer: [
-
-])
+ Bei einer Zentralprojektion sind nicht parallel, sondern gehen alle durch ei
+ nZentrum $a$, das auch Auge genannt wird.
+
+ #cetz.canvas({
+ import cetz.draw: *
+ import cetz.matrix: *
+
+ let transformation = ((1,0.5 * cos(30deg),0),(0,-0.5 * sin(30),1))
+ let d = 1.3
+ let x = (2,2,1)
+
+ circle((0,0), radius: .08)
+ content((), [Auge], padding: .1, anchor: "north")
+
+ line(
+ mul-vec(transformation, (0,0,0)),
+ mul-vec(transformation, (0,0,1)), mark: (end: "stealth"))
+ content((), $z$, anchor: "south")
+
+ line(
+ mul-vec(transformation, (0,0,0)),
+ mul-vec(transformation, (3,0,0)), mark: (end: "stealth"))
+ content((), $x$, anchor: "west")
+
+ line(
+ mul-vec(transformation, (2,0,0)),
+ mul-vec(transformation, (2,3,0)), mark: (end: "stealth"))
+ content((), $y$, anchor: "west")
+
+ line(
+ mul-vec(transformation, (2,2,0)),
+ mul-vec(transformation, x))
+ content((), $bb(x)$, padding: .1, anchor: "west")
+ circle(mul-vec(transformation, x), radius: .08)
+
+ line(
+ mul-vec(transformation, (0,0,0)),
+ mul-vec(transformation, (0,d,0)))
+ content((), $delta$, anchor: "west")
+
+ line(
+ mul-vec(transformation, (0,d,0)),
+ mul-vec(transformation, (1.5,d,0)),
+ mul-vec(transformation, (1.5,d,1)),
+ mul-vec(transformation, (0,d,1)),
+ close: true
+ )
+
+ line(
+ mul-vec(transformation, (0,0,0)),
+ mul-vec(transformation, x))
+
+ let y = mul-vec(((0,0,1,0),(0,d,0,0),(0,0,0,d)),(1,) + x)
+
+ circle(mul-vec(transformation, (y.at(1)/y.at(0),d,y.at(2)/y.at(0))), radius: .08)
+ content((), $bb(y)$, padding: .1, anchor: "north")
+
+ })
+ Wir wählen das Koordinatessystem so, dass der Ursprung im
+ Projektionszentrum, dem Auge $a$ liegt und die Bildebene parallel zur $x
+ z$-Ebene ist. Das Koordinatessystem der Bildebene sei
+ $
+ vec(0, delta, 0), vec(1,0,0), vec(0,0,1)
+ $
+ Dann hat $x = [x y z]^t$ das Bild
+ $
+ y := vec(xi, eta) = vec(x, z) delta / y
+ $
+ ])
#card(
question: [Wie kann sie mit Matrizen beschrieben werden?],
answer: [
-
+ In homogenen Koordinten sieht dies so aus:
+ $
+ bb(y) = vec(1, xi, eta) omega = vec(y, x delta, z delta) phi = mat(0, ,
+ 1,;0, delta,,;0,,,delta) vec(1,x,y,z) phi = P bb(x)
+ $
])
#card(
question: [Was ist die Fokaldistanz und was ist der Hauptpunkt?],
answer: [
-
+ Die Fokaldistanz $delta$ ist der Abstand der Bildebene zur Kamera und
+ kontrolliert die Bildgröße.
+
+ Der Punkt $h$ der Bildebene, wo der Projektionsstrahl/das Auge senkrecht zur
+ Bildebene ist, heißt Hauptpunkt.
])
== Kamerabewegung
#card(
question: [Wie stellt sich eine Zentralprojektion in Matrizen dar,
wenn das Objekt- und Kamerasystem verschieden sind?],
answer: [
-
+ #TODO()[Bild]
+
+ Im Allgemeinen ist das Kamerasystme mit dem Koordinatenvektoren $dash(x) =
+ [xi delta eta]^t$ des Objektsystems bezogen, sondern über eine allgemeine
+ Koordinatentransformation $x = c + [c_1 c_2 c_3] dash(x)$, wobei sich die
+ $c$'s wie $x$ auf das Objektsystem beziehen. Wir fassen die
+ Koordinatentransformation mit Matrizen als $x = c + C dash(x)$ oder kürzer
+ als $bb(x) = mat(1, o^t; c, C) dash(bb(x)) = bb(C) dash(bb(x))$ zusammen.
+ Das zentralperspektivische Bild von $x$ hat somit die homogene Darstellung
+ $bb(y) = bb(T P C)^(-1) bb(x) = bb(A)$, wobei $bb(T)$ zusätzlch eine
+ Translation des Bildsystems beschreibt.
+
+ Weil $C$ orthonormal ist, folgt $bb(C)^(-1) = mat(1, o^t; -C^t c, C^t)$.
])
== Fluchtpunkte
#card(
question: [Was versteht man unter Fluchtpunkten, de Spur, Horizont,
Verschwindungsebene und Fluchtdreieck?],
answer: [
-
+ Eine Gerade
+ $
+ cal(G): x &= p + v lambda
+ bb(x)&= vec(1, p) + vec(0, v) lambda = bb(p) + bb(v) lambda
+ $
+ wird auf die Gerade $cal(G)': bb(A p) + bb(A v) lambda$ abgebildet, wobei
+ $bb(A)$ die Abbildungsmatrix ist. Dabei stellt $bb(A v)$ das Bild des
+ Fernpunkts $f_(cal(G))$ von $cal(G)$ dar. Es ist der Fluchtpunkt von
+ $cal(G)$ bzw. von $cal(G)'$.
+
+ Die Fluchtpunkte (der Geraden) einer Ebene $cal(E)$ bilden deren
+ Fluchtgeraden oder, wenn $cal(E)$ horizontal ist, deren Horizont.
+
+ Der Schnitt einer Ebene $cal(E)$ mit der Bildebene heißt die Spur von
+ $cal(E)$. Sie ist parallel zu Fluchtgeraden von $cal(E)$.
+
+ Die Ebene $cal(V)$ parallel zur Bildebene durch das Auge heißt
+ Verschwindungsebene. Sie wird auf die Ferngerade der Bildebene abgebildet,
+ aber das Auge hat kein Bild.
])
#card(
question: [Wann sind Fluchtpunkte Fernpunkte?],
answer: [
-
+ Ist $cal(G)$ parallel zur Bildebene, ist ihr Fluchtpunkt ein Fernpunkt der
+ Bildebene.
])
#card(
question: [Wo schneiden sich Spur und Fluchtgeraden einer Ebene?],
@@ -1251,7 +1374,20 @@ Verschwindungsebene und Fluchtdreieck?],
question: [Erklären Sie, was die Spalten und Elemente der Matrix
einer Zentralperspektive bedeuten!],
answer: [
+ Eine Zentralperspektive hat die Darstellung $bb(y) = bb(A x)$ und
+ ausführlicher
+ $
+ vec(epsilon, y) rho = mat(1 alpha, epsilon_1 alpha_1, epsilon_2 alpha_2,
+ epsilon_3 alpha_3; a alpha, a_1 alpha_1, a_2 alpha_2, a_3 alpha_3) vec(e,
+ x)
+ $
+ wobei $epsilon, epsilon_1, epsilon_2, epsilon_3, e in {0,1}$ und $alpha_i !=
+ 0 != alpha$. Dabei wird vorausgesetzt, dass $[1, o]^t$ nicht in der
+ Verschwindungsebene liegt.
+ Die Spalten von $bb(A)$ repräsentieren das Bild des Objektsystems, $a$ das
+ Bild des Ursprungs $[1, o]^t$ und $[epsilon_i, a_i]^t$ den Fluchtpunkt
+ $f_i$ der i-Achse.
])
== Kameradaten
#card(
@@ -1259,13 +1395,37 @@ einer Zentralperspektive bedeuten!],
Hauptrichtungsvektor, den Hauptpunkt und die
Fokaldistanz aus der Matrix einer Zentralperspektive?],
answer: [
-
+ Die Verschwindungsebene hat die Gleichung $
+ epsilon rho &= epsilon_1 alpha_1 x + epsilon_2 alpha_2 y + epsilon_3 alpha_3 z + alpha e \
+ &= [alpha epsilon_1 alpha_1, epsilon_2 alpha_2, epsilon_3,
+ alpha_3] vec(e, x, y, z) \
+ &= 0
+ $
+ und den nicht normierten Normalenvektor $n:= [epsilon_1 alpha_1, epsilon_2,
+ alpha_2, epsilon_3 alpha_3]$. Seine Vielfachen $n rho$ mit $rho != 0$ sind
+ die Hauptrichtungsvektoren. Das Auge $c$ wird durch den Lösung von $bb(A c)
+ = bb(o)$ repräsentiert und der Hauptpunkt durch $bb(h) = bb(A) vec(0, n)$,
+ woraus $h = sum a_i lambda_i$ mit $lambda_i = (epsilon_i alpha_i^2)/(n^t n)$
+ folgt.
+
+ Die Fokaldistanz $delta$ lässt sich aus dem Hauptrichtungsvektor $n$ und
+ einem Vektor $v$ im Winkel von 45° zu $n$ ermitteln, da sie dem Abstand von
+ $f lt.tri bb(A v)$ zu $h$ entspricht.
])
#card(
question: [Warum ist der Hauptpunkt der Höhenpunkt des
Fluchtdreiecks?],
answer: [
-
+ Jede $(3 times 4)$-Matrix $bb(A) = mat(1, alpha_1, alpha_2, alpha_3; a, a_1
+ alpha_1, a_2 alpha_2, a_3 alpha_3)$ vom Rang 3 repräsentiert eine
+ 3-Punkt-Perspektive genau dann, wenn $h = sum a_i a_i^2 / (a_1^2 + a_2^2 +
+ a_3^2)$
+ der Höhepunkt des Dreiecks $a_1 a_2 a_3$ ist.
+
+ Diese Bedingung ergibt sich aus Abschnitt 4.6 und sie beinhaltet zwei
+ Bedingungen, nämlich je eine für beide Koordinaten von h. Im Übrigen ist das
+ Fluchtdreieck einer 3-Punkt-Perspektive immer spitzwinklig, da alle $alpha_i
+ > 0$, weswegen der Hauptpunkt im Dreiecksinneren liegt.
])
== Fluchtpunkte des Systems
#card(
@@ -1273,14 +1433,34 @@ Fluchtdreiecks?],
erkennen, ob und welche i-Punkt-Perspektive eine Matrix
darstellt?],
answer: [
-
+ Die Matirx $bb(A) = mat(epsilon_0 alpha, epsilon_1 alpha_1, epsilon_2
+ alpha_2, epsilon_3 alpha_3; a alpha, a_1 alpha_1, a_2 alpha_2, a_3 alpha_3)$
+ (vom Rang 3), repräsentiert eine i-Punkt-Perspektive, wobei $i = epsilon_1 +
+ epsilon_2, epsilon_3$.
+
+ 0-Punkt: $epsilon_i = 0$ \
+ 1-Punkt: $epsilon_2 = 1, norm(a_1) = norm(a_3), a_1 bot a_3$ \
+ 2-Punkt: $epsilon_1 = epsilon_2 = 1, a_3 bot a_2 - a_1, norm(a_3) sqrt(a_1^1
+ + a_2^2) = abs(alpha_1 alpha_2) norm(a_2 - a_1)$ \
+ 3-Punkt: $epsilon_{1,2,3} = 1, h = sum a_i alpha_i^2 / (alpha_1^2 +
+ alpha_2^2 + alpha_3^2)$ der Höhenpunkt des Dreiecks $a_1 a_2 a_3$ ist.
])
== Urbilder
#card(
question: [Wie berechnet man das Urbild eines Punkts und einer
Geraden unter einer Zentralperspektive?],
answer: [
-
+ Möchten wir bei bekannter Matrix $bb(A)$ einer Zentralprojektion zu einem
+ gegbenen Bildpunkt $y$ den Urbildpunkt $x$ bestimmen, haben wir diese drei
+ Gleichungen für vier Unbekannte zu läsen: $bb(A) vec(1, x) omega = vec(1,
+ y)$.
+
+ Eine Gerade $cal(V): bb(v)^t bb(y) = 0$ der Bildebene hat die Ebene $cal(U)
+ : bb(v)^t bb(A) vec(1,x) xi = bb(u)^t vec(1, x) xi = 0$ als Urbild und, wenn
+ wir $xi$ jeweils streichen, erhalten wir über zwei Geraden durch $y$ zwei
+ Gleichungen für die rdei Koordinaten des gesuchten Punkts $x$. Weitere
+ Geraden durch $y$ sind von den ersten beiden abhängig und führen nur zu
+ abhängigen Gleichungen.
])
== Kamerakalibrierung
@@ -1288,7 +1468,15 @@ Geraden unter einer Zentralperspektive?],
question: [Wie kann man die Matrix bestimmen, die zu einem
zentralperspektivischen Bild gehört?],
answer: [
-
+ Die Gleichung $bb(v)^t bb(A) = sum v_i a_(i j) x_j = 0$ ist linear in den 12
+ Matrixelemenden $a_(i j)$. Kennt man sechts Pankte $x$ und ihre Bilder $y$,
+ kann man $bb(A)$ folglich daraus berchenen.
+
+ Da $bb(A)$ homogen ist und zwei Bedingungen genügt, reichen zur Bestimmung
+ von $bb(A)$ sogar nur 4,5 Pankte, d.h. vier Punkte mit je zwei Geraden und
+ ein Punkt mit einer Geraden. Mehr zu kennen hilft aber numerische Fehler
+ entgegenzuwirken. Man bekommt dann überbestimmte Gleichungssysteme, die mit
+ Hilfe der Methode der kleinsten Quadrate gelöst werden.
])
#card(
question: [Wie viele Freiheitsgrade hat man für diese Matrizen und