diff --git a/ggg/ggg-cards.typ b/ggg/ggg-cards.typ index 6534e5b..0898f32 100644 --- 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