diff --git a/ggg/ggg-cards.typ b/ggg/ggg-cards.typ new file mode 100644 index 0000000..273ec44 --- /dev/null +++ b/ggg/ggg-cards.typ @@ -0,0 +1,1568 @@ +#import "@preview/cetz:0.4.0" + +#set page(margin: 1cm, columns: 2) +#set heading(numbering: "1.1") + +#set math.mat(delim: "[") +#set math.vec(delim: "[") + +#let transpose(t)={ + let output=t.at(0).zip(..t.slice(1)) + output +} + +#let card( + question: "", + answer: "" +) = rect(width: 100%)[ + #strong(question) + + #answer +] + + +/* +* Grundseite XY +* X = Höhe +* Y = Breite +* Z = Tiefe +* x ^ . z +* | / +* +---> y +*/ + +#let cube = ( + points: ( + (0,0,0), // 0 + (1,0,0), // 1 + (0,1,0), // 2 + (1,1,0), // 3 + (0,0,1), // 4 + (1,0,1), // 5 + (0,1,1), // 6 + (1,1,1), // 7 + ), + edges: ( + (0,1, orange), + (0,2, orange), + (0,4), + (1,3, orange), + (1,5), + (2,3, orange), + (2,6), + (3,7), + (4,5), + (4,6), + (5,7), + (6,7) + ) +) + +#let house = ( + points: ( + (0.0, 0.0, 0.0), // 0 + (0.0, 0.0, 0.5), // 1 + (0.0, 1.0, 0.0), // 2 + (0.0, 1.0, 0.5), // 3 + (1.0, 0.0, 0.0), // 4 + (1.0, 0.0, 0.5), // 5 + (1.0, 1.0, 0.0), // 6 + (1.0, 1.0, 0.5), // 7 + (0.0, 0.5, 1.0), + (1.0, 0.5, 1.0) + ), + edges: ( + (0,1, orange), + (0,2, orange), + (0,4), + (1,3, orange), + (1,5), + (2,3, orange), + (2,6), + (3,7), + (4,5), + (4,6), + (5,7), + (6,7), + // Roof + (1,8, orange), + (3,8, orange), + (5,9), + (7,9), + (8,9) + ) +) + += Darstellende Geometrie +== Der Satz von Pohlke +#card( + question: [Wie lautet der Satz von Pohlke und wie lasst er sich anwenden?], + answer: [ + Jedes Dreibein, das eine Ebene aufspannt, ist Parallelprojektion eines + gleichschenkligen orthogonalen Dreibeins im Raum. + +#cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + for edge in cube.edges { + let transformation = transform-rotate-xz(75deg, -35deg) + let a = mul4x4-vec3(transformation, cube.points.at(edge.at(0))) + let b = mul4x4-vec3(transformation, cube.points.at(edge.at(1))) + // let a = cube.points.at(edge.at(0)) + // let b = cube.points.at(edge.at(1)) + line((a.at(0), a.at(1)), (b.at(0), b.at(1)), stroke: if (a.at(2) < 0 or + b.at(2) < 0) {gray} else {black}) + } +}) +]) +#card( + question: [Was sind Militar-, Kavalier-und Kabinett­Projektionen?], + answer: [ + #table(columns: 3*(1fr,), + [Militar], [Kavalier], [Kabinett], + [ +#cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + for edge in cube.edges { + let transformation = ((cos(45deg),cos(45deg),0),(sin(45deg),-sin(45deg),-1)) + let a = mul-vec(transformation, cube.points.at(edge.at(0))) + let b = mul-vec(transformation, cube.points.at(edge.at(1))) + line(a,b, stroke: if (edge.len() > 2) {edge.at(2)} else {black}) + } +}) + ], + [ +#cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + for edge in cube.edges { + let transformation = ((1,0,cos(45deg)),(0,1,sin(45deg))) + let a = mul-vec(transformation, cube.points.at(edge.at(0))) + let b = mul-vec(transformation, cube.points.at(edge.at(1))) + line(a,b, stroke: if (edge.len() > 2) {edge.at(2)} else {black}) + } +}) + ], + [ +#cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + for edge in cube.edges { + let transformation = ((1,0,0.5 * cos(45deg)),(0,1,0.5 * sin(45deg))) + let a = mul-vec(transformation, cube.points.at(edge.at(0))) + let b = mul-vec(transformation, cube.points.at(edge.at(1))) + line(a,b, stroke: if (edge.len() > 2) {edge.at(2)} else {black}) + } +}) + ] + ) + +]) +== Orthogonale Projektionen +#card( + question: [Was sind Othogonal-, isometrische und dimetrische Projektionen?], + answer: [ + *Orthogonalprojektion:* Parallelprojektion, bei denen die Projektion- +sstrahlen senkrecht zur Bildebene sind. + + *isometrisch:* Orthogonalprojektion, bei der die Bildebene senkrecht zur + Raumdiagonalen ist. + + *dimetrisch:* wie isometrisch, aber die tiefe ist nur 1/2 +]) +#card( + question: [Wie erkennt man, dass die Parallelprojektion des +Einheitswürfels eine Orthogonalprojektion ist?], + answer: [ + +]) +== Grund-und Aufriss +#let scene(xy) = { + import cetz.draw: * + import cetz.matrix: * + + let model = house + + for edge in model.edges { + let a = vector.add(model.points.at(edge.at(0)), (0.3,0,0)) + let b = vector.add(model.points.at(edge.at(1)), (0.3,0,0)) + line(mul-vec(xy, a),mul-vec(xy, b), stroke: if (edge.len() > 2) {edge.at(2)} else {gray}) + } + line( + mul-vec(xy, (0,-0.5,0)), + mul-vec(xy, (1,-0.5,0)), + mark: (end: "stealth")) + content((), $ x $, anchor: "west") + line( + mul-vec(xy, (0,-0.5,0)), + mul-vec(xy, (0,2,0)), + mark: (end: "stealth")) + content((), $ * (y) $, anchor: "west") + line( + mul-vec(xy, (0,-0.5,0)), + mul-vec(xy, (0,-0.5,1)), + mark: (end: "stealth")) + content((), $ z $, anchor: "south") + circle( + mul-vec(xy, (1.3,0,0.5)), radius: 0.08, + fill: white + ) + content((rel: (0,0.3)), $mono(x)$) + circle( + mul-vec(xy, (1.3,0,0)), radius: 0.08, + fill: white + ) + content((rel: (0,-0.3)), $mono(x')$) + circle( + mul-vec(xy, (0,0,0.5)), radius: 0.08, + fill: white + ) + content((rel: (0,0.3)), $mono(x'')$) +} +#card( + question: [Was sind Grund- und Aufriss, Ordner und Rissachsen?], + answer: [#grid(columns: 2*(1fr,), align: center + horizon, +cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + + // let transformation = transform-rotate-xyz(0deg, -20deg, 40deg) + let xy = ((cos(30deg),cos(30deg),0),(-sin(30deg),sin(30deg),1)) + scene(xy) +}), +cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + let model = house + + let xy = ((0,1,0),(0,0,1)) + for edge in model.edges { + let a = vector.add(model.points.at(edge.at(0)), (0,0,0)) + let b = vector.add(model.points.at(edge.at(1)), (0,0,0)) + line(mul-vec(xy, a),mul-vec(xy, b), stroke: if (edge.len() > 2) {edge.at(2)} else {gray}) + } + circle( + mul-vec(xy, (1.3,0,0.5)), radius: 0.08, + fill: white + ) + content((rel: (0,0.3)), $mono(x'')$) + line( + mul-vec(xy, (0,-0.5,0)), + mul-vec(xy, (0,-0.5,1)), + mark: (end: "stealth") + ) + content((), $ z $, anchor: "south") + line( + mul-vec(xy, (0,-0.5,0)), + mul-vec(xy, (0,1.3,0)), + mark: (end: "stealth") + ) + content((), $ * $, anchor: "west") + content((rel: (0,-.1)), $ y $, anchor: "north") + content((.6,1.2), [Aufriss]) + + /* + * Grundriss + */ + + let xy = ((0,1,0),(-1,0,0)) + for edge in model.edges { + let a = vector.add(model.points.at(edge.at(0)), (0.3,0,0)) + let b = vector.add(model.points.at(edge.at(1)), (0.3,0,0)) + line(mul-vec(xy, a),mul-vec(xy, b), stroke: if (edge.len() > 2) {edge.at(2)} else {gray}) + } + circle( + mul-vec(xy, (1.3,0,0.5)), radius: 0.08, + fill: white + ) + content((rel: (0,0.3)), $mono(x')$) + line( + mul-vec(xy, (0,-0.5,0)), + mul-vec(xy, (1,-0.5,0)), + mark: (end: "stealth") + ) + content((), $ x $, anchor: "north") + + content((.6,-1.6), [Grundriss]) + + /* + * Seitenriss + */ + let phi = 60deg + let margin = 1.3 + let xy = ((sin(phi),cos(phi),0),(0,0,1)) + let transform(v) = vector.add( + mul-vec( + ((cos(-phi),-sin(-phi)),(sin(-phi),cos(-phi))), + mul-vec(xy, vector.add(v, (-.5,-.5,margin))) + ), + (0.5,-.3 -.5) + ) + for edge in model.edges { + let a = vector.add(model.points.at(edge.at(0)), (0,0,0)) + let b = vector.add(model.points.at(edge.at(1)), (0,0,0)) + line(transform(a),transform(b), stroke: if (edge.len() > 2) {edge.at(2)} else {gray}) + } + let transform(v) = vector.add( + mul-vec( + ((cos(-phi),-sin(-phi)),(sin(-phi),cos(-phi))), + v + ), + (0.5,-.3 -.5) + ) + line(transform((-1,margin)),transform((1,margin))) + content((), $ ** $, angle: -phi, anchor: "west") + + content((2,1), [Seitenriss]) +}) +) +$*$, $*$$*$: Rissachsen \ +Ordner +]) +#card( + question: [Ein Punkt liege in einem durch Grund-und Aufriss +bekannten Dreieck. Konstruieren Sie zum Aufriss des +Punkts seinen Grundriss.], +answer: [ + Ziehe Geraden je von Ecke durch Punkt bis gegenüberliegende Kante. + Der Schnittpunkt teilt Kante in zwei Teilverhaltnisse. + Diese Teilverhaltnisse in Grundriss übertragen und Gerade von Schnittpunkt zu + Ecke ziehen. Schnittpunkt aller Geraden ist der Punkt im Grundriss. +]) +== +5 (Spezielle) Seitenrisse +#card( + question: [Wie konstruiert man einen Seitenriss?], + answer: [ + Man schaut von Modell in Richtung Rissachse. +]) +#card( + question: [Zeichnen Sie zum Grund-und aufriss eines Würfels einen +Seitenriss, der eine der Würfel-Diagonalen in wahrer +Länge zeigt.], + answer: [ + Erster Seitenriss 45deg. Dann zweiten Seitenriss 45deg zum ersten + Seitenriss. Zeigt Raumdiagonale in wahrere länge. + ]) +== Kurven auf Flachen +#card( + question: [ +Wie berechnet man die Tangentialebenen einer implizit +gegebenen Flache?], + answer: [ + $Delta F dot (y - x) = 0$ stellt die Tangentialebene von $cal(F)$ an der Stelle + $x$ dar. (Implizite Flächendarstellung $F(x) = F(x,y,z) = 0$) +]) +#card( + question: [Was ist die Kontur und was gilt für eine Kurve, die die +Kontur schneidet im Grundriss?], + answer: [ + Wo $x(t)$ die Konturlinie kreuzt, berührt sie im Grundriss den Umriss. + Bei parallelem Licht teilt die Konturlinie die helle und die dunkle Seite + des Modells. Der Schatten = Silhoutte hat einen Umriss. +]) + +== Durchdringungen +#card( + question: [Zeichnen Sie die Durchdringung von zwei Zylindern, deren +Achsen, die sich im Allg. nicht schneiden, orthogonale +Richtungen haben. +], +answer: [ + +]) + += Affine Geometrie +== Affine Raume und Koordinaten +#card( + question: [Was sind ein affiner Raum, ein affines Koordinatensystem +und affine Koordinaten?], + answer: [ + Ein affiner Raum ist eine Punktmenge $cal(A)$ mit einem zugehörigen + Vektorraum $A$ und einer binären surjektiven Operation $-: cal(A) times + cal(A) -> A, (p,q) |-> q - p$ + + Ein affines Koordinatensystem besteht aus einem Ursprung $a in cal(A)$ und + einer Basis $a_1...a_n in A$. Bezüglich solch eines affinen + Koordinatensystems hat jeder Punkt $x in cal(A)$ eine eindeutige Darstellung + $x = a + a_1 x_1 + ... + a_n x_n$. Die Koeffizienten $x_i$ heißen affine + Koordinaten von $x$ bezüglich des affinene Systems $a a_1...a_n$ und bilden + den Koordinatenvektor $[x_1 ... x_n]^t$ des Punktes $x$. +]) + +== Baryzentrische Koordinaten +#card( + question: [Was sind baryzentrische Koordinaten, Grundecke, +erweiterte Koordinaten?], + answer: [ + Zu einem Punkt $p = p_0 + a_1 x_1 + ... + + a_n x_n$ sind die Koeffizienten $x_0, ..., x_n$ die baryzentrischen + Koordinaten bezüglich des Grundecks $p_0 .. p_n$. Gleichzeitig erweitern sie + die affinen Koordinaten, sodass sich die Summe zu Eins ergänzt. + $ + script("erweiterter \nKoordinatenvektor") + vec(1,p) = mat(1,...,1;p_0, ..., p_n) vec(x_0, x) + script("baryzentrischer \nKoordinatenvektor") + $ +]) +#card( + question: [Wie hängen baryzentrische und affine Koordinaten +zusammen?], + answer: [ + $ + &p = \ + &= p_0 + a_1 x_1 + ... + a_n x_n \ + &= p_0 (1 - x_1 - ... - x_n) + (a + a_1) x_1 + ... + (a + a_n) x_n \ + &= p_0 x_0 + ... + p_n x_n + $ +]) +#card( + question: [Was bedeuten baryzentrische Koordinaten bezüglich eines +Dreiecks geometrisch?], + answer: [ + #grid(columns: 2*(1fr,), + cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + import calc: * + + let a = (0,0) + let b = (3,0.5) + let c = (1.2,2) + circle(a, radius: 0, name: "a") + circle(b, radius: 0, name: "b") + circle(c, radius: 0, name: "c") + let transformation = transpose((a,b,c)) + let bary(x) = mul-vec(transformation, vector.div(x, x.sum())) + + line( + (bary: (a: 1, b: 0, c: 0)), + (bary: (a: 0, b: 1, c: 0)), + (bary: (a: 0, b: 0, c: 1)), + close: true + ) + + let p = (.28,.32,.5) + + circle((bary: (a: .28, b: .32, c: .5)), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $p$, anchor: "north") + line((bary: (a: 1, b: 0, c: 0)), bary(vector.element-product(p, (0,1,1)))) + + line(bary((1,0,0)), bary(p), name: "line") + content( + ("line.start", 70%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "south", + text($x_1 + x_2$, size: 7pt) + ) + line(bary(p), bary(vector.element-product(p, (0,1,1))), name: "line") + content( + ("line.start", 30%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "south", + text($: x_0$, size: 7pt) + ) + + line(bary((0,0,1)), bary(vector.element-product(p, (0,1,1))), name: "line") + content( + ("line.start", 50%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "south", + text($x_1$, size: 7pt) + ) + content( + ("line.start", 99%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "south", + text($:$, size: 7pt) + ) + line(bary(vector.element-product(p, (0,1,1))), bary((0,1,0)), name: "line") + content( + ("line.start", 50%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "south", + text($x_2$, size: 7pt) + ) + + circle(("a"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $p_0$, anchor: "north") + circle(("b"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $p_1$, anchor: "south-west") + circle(("c"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $p_2$, anchor: "south-west") + }), + + cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + import calc: * + + let a = (0,0) + let b = (3,0.5) + let c = (1.2,2) + circle(a, radius: 0, name: "a") + circle(b, radius: 0, name: "b") + circle(c, radius: 0, name: "c") + let transformation = transpose((a,b,c)) + let bary(x) = mul-vec(transformation, vector.div(x, x.sum())) + + line( + (bary: (a: 1, b: 0, c: 0)), + (bary: (a: 0, b: 1, c: 0)), + (bary: (a: 0, b: 0, c: 1)), + close: true + ) + + let coord = (.28,.32,.5) + let p = vector.div(coord, coord.sum()) + + circle((bary(p)), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $p$, anchor: "north") + + line(bary((p.at(0) + p.at(1),0,p.at(2))), bary((0,p.at(0) + p.at(1), p.at(2))), name: "line") + line(bary((p.at(0),0,p.at(1) + p.at(2))), bary((p.at(1),p.at(0) + p.at(2), 0)), name: "line") + line(bary((0,p.at(1),p.at(0) + p.at(2))), bary((p.at(2) + p.at(0),p.at(1), 0)), name: "line") + + line(bary((1,0,0)), bary((p.at(2) + p.at(0),p.at(1), 0)), name: "line") + content( + ("line.start", 50%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "north", + text($x_1 :$, size: 7pt) + ) + + line(bary((p.at(2) + p.at(0),p.at(1), 0)), bary((p.at(1),p.at(0) + p.at(2), 0)), name: "line") + content( + ("line.start", 50%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "north", + text($x_2$, size: 7pt) + ) + + line(bary((p.at(1),p.at(0) + p.at(2), 0)), bary((0,1,0)), name: "line") + content( + ("line.start", 50%, "line.end"), + angle: "line.end", + padding: .05, + anchor: "north", + text($: x_0$, size: 7pt) + ) + + circle(("a"), radius: 0.08, fill: white) + content((rel: (angle: -20deg, radius: .2)), $p_0$, anchor: "north") + circle(("b"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $p_1$, anchor: "south-west") + circle(("c"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $p_2$, anchor: "south-west") + }) + ) +]) +#card( + question: [Wie erhalt man die baryzentrischen Koordinaten des +Höhenpunkts, des In-und Umkreismittelpunkts eines +Dreiecks?], + answer: [ + Umkreismittelpunkt: + $ + m = (sans(a) sin(2 alpha) + ... + sans(c) sin(2 gamma)) / (sin(2 gamma) + ... + sin(2 gamma)) + $ + + Inkreismittelpunkt + $ + n = (sans(a) a + ... + sans(c) c) / (a + ... + c) + $ + + Höhenpunkt + $ + h = (sans(a) tan(alpha) + ... + sans(c) tan(gamma)) / (tan(alpha) + ... + tan(gamma)) + $ +]) +== Affinkombinationen +#card( + question: [Was sind Affin-und Konvex-kombinationen?], + answer: [ + Eine Affinkombinationen ist eine Summe + $ + sans(p) &:= sum_(i=0)^m p_i omega_i \ + &:= sans(p)_0 omega + (sans(p)_1 - sans(p)_0)omega_1 + ... + + (sans(p)_m - sans(p)_0) omega_m + $ + $ + omega = omega_0 + ... + omega_m = cases(1 "falls" sans(p) "ein Punkt", 0 + "falls" sans(p) "ein Vektor") + $ + Eine Affinkombinationen heißt Konvexkombination, falls + $ + omega = 1 "und" forall i : omega_i >= 0 + $ +]) +#card( + question: [Was sind konvexe Hüllen und Simplexe?], + answer: [ + Die Menge aller Konvexkombinationen bildet die konvexe Hülle der Punktmenge + ${sans(p)_0, ..., sans(p)_m}$. Insbesonder heißt die konvexe Hülle eines + Grundecks $sans(p)_0...sans(p)_n$ Simplex und speziell für $n=1$ Strecke, + für $n=2$ Dreieck und für $n=3$ Tetraeder. +]) +== Unterraume +#card( + question: [Wie kann man affine Unterraume darstellen?], + answer: [ + Die Lösung + $ + n vec("", x, "") = vec("", b, "") + overbrace(mat(""; b_1, ..., b_r; ""),r) vec(y,"")r + $ + eines inhomogenen linearen Gleichungssystems (LGS) + $ + n-r overbrace(mat(""; "", A, ""; ""), n) vec("", x, "") = vec(a, "") + $ + vom Rang $n-r$ stellt einen affinen Unterraum des $cal(A)^n$ der Dimension + $r$ dar. Der Parametervektor $y$ stellt $x$ bezüglich des + Unterraum-Koordinatensystems $sans(b)sans(b)_1...sans(b)_r$ dar. +]) +#card( + question: [Was ist eine Hyperebene und wie stellt man sie mit +baryzentrischen Koordinaten dar?], + answer: [ + Eine Hyperebene ist ein (n-1)-dimensionaler Untervektorraum des $cal(A)^n$. + Sie hat eine Darstellung der Form $u(x) := u_1 x_1 + ... + u_n x_n + u_0 = + 0$.Aus dieser linearen Gleichung lässt sich leicht eine Darstellung in + baryzentrischen Koordinaten bezüglich der Punkte mit den erweiterten + Koordinatenvektoren $[1 1 0...0]^t, [1 0 1 0...0]^t, ..., [1 0...0 1]^t$ + gewinnen. Sei $1 = x_0 + ... + x_n$. Dann ist +$ + u(x) &= u_0 ( x_0 + ... + x_n) + u_1 x_1 + ... + u_n x_n \ + &= u_0 x_0 + (u_0 + u_1) x_1 + ... + (u_0 + u_n) x_n \ + &= 0 +$ +]) +#card( + question: [Wie kann ein Würfel in 6 Simplexe gleichen Volumens +zerlegt werden?], + answer: [ + #grid(columns: 2*(1fr,), + [ + $0 <= x <= y <= z <= 1$ \ + $0 <= x <= z <= y <= 1$ \ + $0 <= y <= x <= z <= 1$ \ + $0 <= y <= z <= x <= 1$ \ + $0 <= z <= x <= y <= 1$ \ + $0 <= z <= y <= x <= 1$ \ + ], + [ + #cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + let transformation = ((1,0,-0.5 * cos(45deg)),(0,1,0.5 * sin(45deg))) + for edge in cube.edges { + let a = mul-vec(transformation, cube.points.at(edge.at(0))) + let b = mul-vec(transformation, cube.points.at(edge.at(1))) + line(a,b, stroke: black) + } + line( + mul-vec(transformation, (0,0,0)), + mul-vec(transformation, (1,0,0)), + mul-vec(transformation, (1,1,1)), + mul-vec(transformation, (0,1,1)), + close: true, + stroke: green, + fill: green.transparentize(75%) + ) + line( + mul-vec(transformation, (0,0,0)), + mul-vec(transformation, (0,1,0)), + mul-vec(transformation, (1,1,1)), + mul-vec(transformation, (1,0,1)), + close: true, + stroke: blue, + fill: blue.transparentize(75%) + ) + line( + mul-vec(transformation, (0,0,0)), + mul-vec(transformation, (0,0,1)), + mul-vec(transformation, (1,1,1)), + mul-vec(transformation, (1,1,0)), + close: true, + stroke: red, + fill: red.transparentize(75%) + ) + }) + Einfache Freudenthal-Triangulierung + ] + ) +]) +== Gitter +#card( + question: [Was kann ein regelmaBiges Dreiecksgitter in +baryzentrischen Koordinaten beschrieben werden?], + answer: [ + $ + x = a alpha + b beta + c gamma + text("mit") 1 = alpha + beta + gamma + $ + Die Isolinien $alpha = i, beta = j, gamma = k$ für $i, j, k in ZZ$ beschreiben + ein regelmaBiges Gitter. + + #cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + circle((0,0), radius: 0, name: "a") + circle((1,0), radius: 0, name: "b") + circle((cos(60deg),sin(60deg)), radius: 0, name: "c") + + line((bary: (a: 2, b: -2, c: 1)), (bary: (a: 1, b: -2, c: 2))) + content((rel: (angle: -60deg, radius: -1.3), to: ()), $alpha = 1$, angle: -60deg, anchor: "west") + line((bary: (a: 2, b: -1, c: 0)), (bary: (a: 0, b: -1, c: 2))) + content((rel: (angle: -60deg, radius: -1.3), to: ()), $alpha = 0$, angle: -60deg, anchor: "west") + line((bary: (a: 2, b: 0, c: -1)), (bary: (a: -1, b: 0, c: 2))) + content((rel: (angle: -60deg, radius: -1.3), to: ()), $alpha = -1$, angle: -60deg, anchor: "west") + line((bary: (a: 1, b: 1, c: -1)), (bary: (a: -2, b: 1, c: 2))) + content((rel: (angle: -60deg, radius: -1.3), to: ()), $alpha = -2$, angle: -60deg, anchor: "west") + line((bary: (a: 0, b: 2, c: -1)), (bary: (a: -2, b: 2, c: 1))) + line((bary: (a: -1, b: 3, c: -1)), (bary: (a: -2, b: 3, c: 0))) + + line((bary: (a: 1, b: -2, c: 2)), (bary: (a: -2, b: 1, c: 2))) + content((rel: (.1,0)), $gamma = 2$, anchor: "west") + line((bary: (a: 2, b: -2, c: 1)), (bary: (a: -2, b: 2, c: 1))) + content((rel: (.1,0)), $gamma = 1$, anchor: "west") + line((bary: (a: 2, b: -1, c: 0)), (bary: (a: -2, b: 3, c: 0))) + content((rel: (.1,0)), $gamma = 0$, anchor: "west") + line((bary: (a: 2, b: 0, c: -1)), (bary: (a: -2, b: 4, c: -1))) + content((rel: (.1,0)), $gamma = -1$, anchor: "west") + + + line((bary: (a: 2, b: -2, c: 1)), (bary: (a: 2, b: 0, c: -1))) + content((rel: (angle: 60deg, radius: -1.3), to: ()), $beta = 0$, angle: 60deg, anchor: "west") + line((bary: (a: 1, b: -2, c: 2)), (bary: (a: 1, b: 1, c: -1))) + content((rel: (angle: 60deg, radius: -1.3), to: ()), $beta = 1$, angle: 60deg, anchor: "west") + line((bary: (a: 0, b: -1, c: 2)), (bary: (a: 0, b: 2, c: -1))) + content((rel: (angle: 60deg, radius: -1.3), to: ()), $beta = 2$, angle: 60deg, anchor: "west") + line((bary: (a: -1, b: 0, c: 2)), (bary: (a: -1, b: 3, c: -1))) + content((rel: (angle: 60deg, radius: -1.3), to: ()), $beta = 3$, angle: 60deg, anchor: "west") + line((bary: (a: -2, b: 1, c: 2)), (bary: (a: -2, b: 4, c: -1))) + + circle(("a"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $a$, anchor: "south-west") + circle(("b"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $b$, anchor: "south-west") + circle(("c"), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $c$, anchor: "south-west") + }) +]) +#card( + question: [Was ist die Coxeter-Freudenthal-Kuhn­Triangulierung?], + answer: grid(columns: 2, gutter: 10pt, [ + #cetz.canvas({ + import cetz.draw: * + import cetz.matrix: * + + let perspective = ((1,0,cos(45deg)),(0,1,sin(45deg))) + for edge in cube.edges { + let a = mul-vec(perspective, cube.points.at(edge.at(0))) + let b = mul-vec(perspective, cube.points.at(edge.at(1))) + line(a,b, stroke: black) + } + let a = (0,0,0) + let b = (1,0,0) + let c = (0,0,1) + let d = (0,1,0) + let transformation = transpose((a,b,c,d)) + let bary(x) = mul-vec(transformation, vector.div(x, x.sum())) + + line( + mul-vec(perspective, bary((0,0,0,1))), + mul-vec(perspective, bary((0,0,1,0))), + mul-vec(perspective, bary((-1,1,1,0))), + mul-vec(perspective, bary((-1,1,0,1))), + fill: red.transparentize(70%), + stroke: red, + close: true + ) + line( + mul-vec(perspective, bary((0,1,0,0))), + mul-vec(perspective, bary((0,0,1,0))), + mul-vec(perspective, bary((-1,0,1,1))), + mul-vec(perspective, bary((-1,1,0,1))), + fill: green.transparentize(70%), + stroke: green, + close: true + ) + line( + mul-vec(perspective, bary((0,1,0,0))), + mul-vec(perspective, bary((0,0,1,0))), + mul-vec(perspective, bary((0,0,0,1))), + fill: blue.transparentize(70%), + stroke: blue, + close: true + ) + line( + mul-vec(perspective, bary((-1,1,1,0))), + mul-vec(perspective, bary((-1,1,0,1))), + mul-vec(perspective, bary((-1,0,1,1))), + fill: blue.transparentize(70%), + stroke: blue, + close: true + ) + + circle(mul-vec(perspective, a), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $a$, anchor: "south-west") + circle(mul-vec(perspective, b), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $b$, anchor: "south-west") + circle(mul-vec(perspective, c), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $c$, anchor: "south-west") + circle(mul-vec(perspective, d), radius: 0.08, fill: white) + content((rel: (angle: 20deg, radius: .2)), $d$, anchor: "south-west") + }) +], [ + Der Würfel links ist in sechs Tetraeder zerlegt. Unterteilt man alle Würfel + eines raumfüllenden regelmäßigen Würfelgitters parallel zu der links gezeigten + Unterteilung, erhält man die Coxeter-Freudenthal-Kuhn-Triangulierung des + Raums. +])) +== Affine Abbildungen +#card( + question: [Was ist eine affine Abbildung und die ihr zugeordnete +lineare Abbildung?], + answer: [ + Eine Abbildung $Phi: cal(A) -> cal(B)$ zwischen affinen Räumen heißt affin, + wenn sie alle Affinkombinationen invariant lässt, d.h. wenn sie mit + Affinkombinationen vertauschbar ist: $Phi(sum sans(p)_i x_i) = sum(Phi + sans(p)_i) x_i$ + + $ + Phi(sans(x)) = Q bb(x) &:= sans(q)_0 x_0 + ... + sans(q)_n x_n \ + &= sans(q)_0 + (sans(q)_1 - sans(q)_0) x_1 + ... + + (sans(q)_n - sans(q)_0) x_n \ + &=: sans(b) + B sans(x) + $ + + Die Abbildung $phi(sans(v)) = B sans(v)$ ist die $Phi$ zugeodnete lineare + Abbildung $sans(A) -> sans(B)$ für $sans(v) = sans(y) - sans(x), + Phi(sans(y)) - Phi(sans(x)) = B sans(v)$ +]) +#card( + question: [Wie lassen sich beide mit baryzentrischen Koordinaten +und Matrizen beschreiben?], + answer: [ + Der Vektor $sans(v)$ hat den baryzentrischen Koordinatenvektor $bb(v) = + bb(y) - bb(x)$. Somit haben die affine Abbildung $Phi$ und die zugeodnete + lineare Abbildung $phi$ bezüglich baryzentrischen Koordinaten die gleiche + Matrixdarstellung: + $ + Phi(sans(x)) = Q bb(x) = mat(sans(q)_0,...,sans(q)_n) bb(x)\ + phi(sans(v)) = Q bb(v) = mat(sans(q)_0,...,sans(q)_n) bb(v) + $ +]) +== Parallelitat und Teilverhaltnisse +#card( + question: [Wie sind Parallelitat und Teilverhaltnisse definiert?], + answer: [ + Zwei affine Unterräume $cal(U) = sans(p) + sans(U)$ und $cal(V) = sans(q) + + sans(V)$ der $cal(A)^n$ heißen parallel, falls $sans(U) subset sans(V)$ oder + $sans(V) subset sans(U)$. Die linearen Räume $sans(U)$ und $sans(V)$ heißen + auch Richtungen der affinen Unterräume. + + Zwei Strecken $sans(a b)$ und $sans(c d) subset cal(A)^n$ heißen parallel, + wenngilt + $ + sans(d) - sans(c) = (sans(b) - sans(a)) rho, rho in bb(R) \{0} + $ + + Sind Strecken parallelr, schreiben wir auch + $ + (sans(d) - sans(c)) / (sans(b) - sans(a)) := rho + $ + wobei der Faktor $rho$ das Teilverhältnis der beiden Strecken ist. +]) +== Verallgemeinerte baryzentrische Koordinaten +#card( + question: [Was sind verallgemeinerte baryzentrische Koordinaten +und wie lassen sie sich alle darstellen?], + answer: [ + Sei $sans(p_1 ... p_n)$ ein nicht-degeneriertes Polygon $cal(P)$ im + $cal(A)^2$. + $ + sans(p) = sum sans(p)_i sans(v)_i "und" + 1 = sum sans(v)_i + $ + heißen die $v_i$ verallgemeinerte baryzentrische Koordinaten von + $sans(p)$ bezüglich $cal(P)$. Sie bilden einen verallgemeinerten + baryzentrischen Koordinatenvektor $bb(v) = [v_1 ... v_n]^t$. +]) +== Wachspresskoordinaten +#card( + question: [Was sind die Wachspresskoordinaten und welche +Eigenschaften haben sie?], + answer: [ + $a_i := det mat(1,1,1;sans(p), sans(p)_i, sans(p)_(i+:))$ und + $d_i := det mat(1,1,1; sans(p)_(i-z),sans(p)_i,sans(p)_(i+1))$ + + Wachspresskoordinaten $omega_i := lambda_i / (sum_j lambda_j)$ wobei + $lambda_j = d_j / (a_i a_(i-1))$ + + Die Wachspresskoordinaten kann man als Affinkombinationen der $sans(b)_i$ + darstellen. Bemerkenswerterweise gilt für der Wachspresskoordinatenvektoren + $bb(w) = [omega_1 ... omega_n]^t$, dass $[sans(b)_1 ... sans(b)_n] bb(w) = + bb(w)$. Somit ist $bb(w)$ ein Eigenvektor der Matrix $B = [sans(b)_1 ... + sans(b)_n]$ zum Eigenwert 1. + +]) +== Mittelwertkoordinaten +#card( + question: [Was sind die Mittelwertkoordinaten und wo sind sie alle +positiv?], + answer: [ + Für das Polygon $sans(p p_1 ... p_n)$ sind die Mittelwertkoordinaten $mu_i$ + eines Punkts $sans(p)$ so definiert: + $ + mu_i := tau_i / (sum_j tau_j), "wobei" tau_i := 1 / c_i (tan delta_(i-1) + + tan delta_i) + $ + + Der Kern eines Polygons besteht aus allen Punkten im Inneren, von denen aus + der gesamte Polygonrand gesehen werden kann, wenn der Polygonrand als + undurchsichtig angesehen wird. Die Mittelwertkoordinaten der Punkte im Kern + sind alle positiv. +]) += Euklidische Geometrie +#card( + question: [Was ist ein euklidischer Raum und was unterscheidet ihn +von einem affinen?], + answer: [ + +]) + +== Euklidische Bewegungen +#card( +question: [Was gilt für ihre Matrizen?], + answer: [ + +]) +#card( + question: [Wie kann man die Drehachse einer Rotation im +dreidimensionalen Raum bestimmen?], + answer: [ + +]) + +== Euler-Winkel +#card( + question: [Was sind die Euler-Winkel und wie verwendet man sie?], + answer: [ + +]) + + +== Quaternionen +#card( + question: [Was sind Quaternionen, konjugierte und normierte?], + answer: [ + +]) +#card( + question: [Wie hangen sie mit Rotationen zusammen?], + answer: [ + +]) +#card( + question: [Was lasst sich mit Quaternionen, Euler­Winkeln und +Drehmatrizen jeweils besser gut darstellen oder +durchführen?], + answer: [ + +]) +== Zweibögen +#card( + question: [Was sind Zweibogen und Kontaktelemente?], + answer: [ + +]) +#card( + question: [Wodurch ist ein Zweibogen eindeutig festgelegt?], + answer: [ + +]) +#card( + question: [Was erfüllen die drei Endkontaktelemente der beiden +Bogen eines Zweibogens?], + answer: [ + +]) +#card( + question: [Wie bekommt man alle Zweibogen zu gegebenen +Anfangs-und Endkontaktelement?], + answer: [ + +]) +#card( + question: [Wie übertragen sich planare Zweibogenkonstruktionen +auf sphärische?], + answer: [ + +]) + +== Volumen +#card( + question: [Wie ist das Volumen eines Parallelepipeds definiert?], + answer: [ + +]) +#card( + question: [Warum lassen euklidische Bewegungen +], +answer: [ + +]) + +== Alternierendes Produkt +#card( + question: [Wie ist das alternierende Produkt definiert und welche +Eigenschaften hat es?], + answer: [ + +]) +== Lot und Abstand +#card( + question: [Wie lassen sich die Abstände eines Punkts von einer +Ebene und die zweier Geraden berechnen?], + answer: [ + +]) += Perspektivische Darstellungen +== Homogene Koordinaten +#card( + question: [Was sind homogene Koordinten, Fernpunkte und der +Unpunkt?], + answer: [ + +]) +#card( + question: [Geben Sie die Gleichungsdarstellung einer Hyperebene in +erweiterten Koordinaten an und leiten Sie daraus die +homogene Darstellung ab!], +answer: [ + +]) +#card( + question: [Was ist die Fernhyperebene?], + answer: [ + +]) +== Zentralprojektion +#card( + question: [Was ist eine Zentralprojektion?], + answer: [ + +]) +#card( + question: [Wie kann sie mit Matrizen beschrieben werden?], + answer: [ + +]) +#card( + question: [Was ist die Fokaldistanz und was ist der Hauptpunkt?], + answer: [ + +]) +== Kamerabewegung +#card( + question: [Wie stellt sich eine Zentralprojektion in Matrizen dar, +wenn das Objekt- und Kamerasystem verschieden sind?], + answer: [ + +]) +== Fluchtpunkte +#card( + question: [Was versteht man unter Fluchtpunkten, de Spur, Horizont, +Verschwindungsebene und Fluchtdreieck?], + answer: [ + +]) +#card( + question: [Wann sind Fluchtpunkte Fernpunkte?], + answer: [ + +]) +#card( + question: [Wo schneiden sich Spur und Fluchtgeraden einer Ebene?], + answer: [ + +]) +== Der Hauptsatz +#card( + question: [Erklären Sie, was die Spalten und Elemente der Matrix +einer Zentralperspektive bedeuten!], + answer: [ + + ]) +== Kameradaten +#card( + question: [ Wie erhält man die Verschwindungsebene, den +Hauptrichtungsvektor, den Hauptpunkt und die +Fokaldistanz aus der Matrix einer Zentralperspektive?], + answer: [ + +]) +#card( + question: [Warum ist der Hauptpunkt der Höhenpunkt des +Fluchtdreiecks?], + answer: [ + +]) +== Fluchtpunkte des Systems +#card( + question: [Was ist eine i-Punkt-Perspektive und wie kann man +erkennen, ob und welche i-Punkt-Perspektive eine Matrix +darstellt?], + answer: [ + +]) +== Urbilder +#card( + question: [Wie berechnet man das Urbild eines Punkts und einer +Geraden unter einer Zentralperspektive?], + answer: [ + +]) + +== Kamerakalibrierung +#card( + question: [Wie kann man die Matrix bestimmen, die zu einem +zentralperspektivischen Bild gehört?], + answer: [ + +]) +#card( + question: [Wie viele Freiheitsgrade hat man für diese Matrizen und +was sind ihre Dimensionen?], + answer: [ + +]) += Projektive Geometrie +== Projektive Räume +#card( + question: [Was ist ein projektiver Raum?], + answer: [ + +]) +#card( + question: [Was sind die projektiven Unterräume?], + answer: [ + +]) +#card( + question: [Warum schneiden sich zwei Geraden einer projektiven +Ebene immer?], + answer: [ + +]) +== Projektive Koordinaten +#card( + question: [Wann heißt eine Punktfolge projektiv unabhängig?], + answer: [ + +]) +#card( + question: [Wie ist die projektive Hülle von Punkten definiert?], + answer: [ + +]) +#card( + question: [Wie sind projektive Koordinaten definiert?], + answer: [ + +]) +#card( + question: [Was ist eine projektive Skala?], + answer: [ + +]) +#card( + question: [Wann ist eine projektive Skala eine affine?], + answer: [ + +]) +== Koordintentransformation +#card( + question: [Wie können projektive Koordinaten in projektive +Koordinaten bezüglich eines anderen Grundecks +transformiert werden?], + answer: [ + +]) +#card( + question: [Wie ändern sich bei einer Koordinatentransformation die +Koordinaten von Hyperebenen?], + answer: [ + +]) +#card( + question: [Warum kann jede Hyperebene eines projektiven Raums +als Fernhyperebene aufgefasst werden?], + answer: [ + +]) +== Der Dualraum +#card( + question: [Was ist der Dualraum eines projektiven Raums?], + answer: [ + +]) +#card( + question: [Was heißt alles dual zueinander?], + answer: [ + +]) +#card( + question: [Wie kann man den Schnitt von n Hyperebenen des 𝒫𝒫 ⁿ +berechnen?], + answer: [ + +]) +== Projektive Abbildungen +#card( + question: [Was ist eine projektive Abbildung?], + answer: [ + +]) +#card( + question: [Wann hat eine projektive Abbildung einen ausnahmeraum +und wie ist er definiert?], + answer: [ + +]) +#card( + question: [Auf was bilden projektive Abbildungen projektive +Unterräume ab?], + answer: [ + +]) +== Kollineationen und Korrelationen +#card( + question: [Was sind Kollineationen und Korrelationen?], + answer: [ + +]) +#card( + question: [Wie ist Dualität allgemein definiert?], + answer: [ + +]) +#card( + question: [Wie lautet der Satz von Desargues und wie der dazu duale +Satz?], + answer: [ + +]) +== Linear rationale Transformationen +#card( + question: [Wie lassen sich Projektivitäten zwischen zwei Geraden +darstellen?], + answer: [ + +]) +== Das Doppelverhältnis +#card( + question: [Was ist das Doppelverhältnis?], + answer: [ + +]) + +#card( + question: [Warum sind Doppelverhältnisse invariant unter +projektiven Abbildungen?], + answer: [ + +]) +#card( + question: [Was ist das harmonische Doppelverhältnis?], + answer: [ + +]) +#card( + question: [Was bedeutet harmonische Lage von vier kollinearen +Punkten, wenn einer von ihnen ein Fernpunkt ist?], + answer: [ + +]) +#card( + question: [Unter welchen Vertauschungen ist das harmon,ische +Verhältnis invariant?], + answer: [ + +]) +== Die duale Abbildung +#card( + question: [Was ist die duale Abbildung?], + answer: [ + +]) +== Quadriken +#card( + question: [Was ist eine Quadrik?], + answer: [ + +]) +#card( + question: [Warum können wir annehmen, dass die Matrix einer +Quadrik symmetrisch ist?], + answer: [ + +]) +#card( + question: [Was ist die Fernquadrik und der affine Teil einer +projektiven Quadrik?], + answer: [ + +]) +#card( + question: [Was ist eine Quadrik in einer projektiven Gerade?], + answer: [ + +]) +== Tangential- und Polarebenen +#card( + question: [Wie berechnet man die Tangentenquadrik einer Quadrik?], + answer: [ + +]) +#card( + question: [Was sind Polarebenen?], + answer: [ + +]) +#card( + question: [Was bilden die Tangentialebenen einer Quadrik?], + answer: [ + +]) +#card( + question: [Was ist eine Polaritat?], + answer: [ + +]) +#card( + question: [Ist jede Korrelation eine Polaritat?], + answer: [ + +]) +#card( + question: [Was bedeutet dies für den Begriff der Dualitat?], + answer: [ + +]) +== Harmonische Punkte und Polaritat +#card( + question: [Was ist das Doppelverhaltnis von pq und xy, wenn q auf +der Polaren von p bezüglich einer Quadrik Q liegt und x +und y die Schnittpunkte der Geraden pq mit Q sind?], + answer: [ + +]) +== Normalform +#card( + question: [Was ist die Normalform einer Quadrik?], + answer: [ + +]) +#card( + question: [Wie viele projektiv verschiedene Quadriken gibt es im +reellen projektiven Raum und wie viele im in seiner +komplexen Erweiterung?], + answer: [ + +]) += Hyperbolische Geometrie +== Das hyperbolische Modell +#card( + question: [Erklaren Sie das hyperbolische Modell der hyperbolischen Ebene !], + answer: [ + +]) +#card( + question: [Was sind in diesem Modell die hyperbolischen Geraden?], + answer: [ + +]) +#card( + question: [Was sind die hyperbolischen Abbildungen in diesem Modell?], + answer: [ + +]) +#card( + question: [Nennen Sie einfache Beispiele für hyperbolische +Abbildungen in diesem Modell !], + answer: [ + +]) +== Das Klein-Modell +#card( + question: [Wie ist das Klein-Modell der hyperbolischen Ebene definiert?], + answer: [ + +]) +#card( + question: [Was sind in diesem Modell die hyperbolischen Geraden?], + answer: [ + +]) +#card( + question: [Was sind die hyperbolischen Abbildungen in diesem +Modell?], + answer: [ + +]) + +#card( + question: [Wie sind Entfernungen definiert?], + answer: [ + +]) +#card( + question: [Warum sind Entfernungen invariant unter hyperbolischen +Abb.?], + answer: [ + +]) +== Spiegelungen +#card( + question: [Wie ist eine hyperbolische Spiegelung definiert?], + answer: [ + +]) +#card( + question: [Was muss man tun, um eine hyperbolische Spiegelung ais +euklidische Spiegelung anzusehen?], + answer: [ + +]) +#card( + question: [Wie geht man vor, um zu zeigen, dass jede hyperbolische +Abb. Produkt von Spiegelungen ist?], + answer: [ + +]) +== Kreisverwandtschaften +#card( + question: [Was ist eine stereographische Projektion?], + answer: [ + +]) +#card( + question: [Warum sind stereographische Projektionen winkel-und +kreistreu?], + answer: [ + +]) +#card( + question: [Was sind Kreisverwandtschaften?], + answer: [ + +]) +#card( + question: [Was ist eine Inversion an einem Kreis?], + answer: [ + +]) +#card( + question: [Wie kann man Kreisinversionen berechnen?], + answer: [ + +]) +#card( + question: [(Warum) sind Kreisinversionen winkeltreu?], + answer: [ + +]) +#card( + question: [Warum sind Kreisinversionen Kompositionen von Ahnlichkeiten und + Kreisinversionen?], + answer: [ + +]) +== Das Poincaré-Modell +#card( + question: [Wie ist das Poincaré-Madel! der hyperbolischen Ebene +definiert?], + answer: [ + +]) +#card( + question: [Was sind in diesem Modell die hyperbolischen Geraden?], + answer: [ + +]) +#card( + question: [Was sind die hyperbolischen Spiegelungen in diesem +Modell?], + answer: [ + +]) +#card( + question: [Warum sind die hyperbolischen Abb. genau die +Kreisverwandtschaften, die den Fernkreis auf sich +abbilden?], + answer: [ + +]) +#card( + question: [Wie ist der hyperbolische Winkel definiert?], + answer: [ + +]) +#card( + question: [Warum bleiben Winkel unter hyperbolischen Abb. +invariant?], + answer: [ + +]) + +== Fundamentalgebiete +#card( + question: [Wie gro8 ist die Winkelsumme eines hyperbolischen +Dreiecks?], + answer: [ + +]) +#card( + question: [Warum ist die Winkelsumme eines hyperbolischen +Dreiecks kleiner ais 180], + answer: [ + + ]) +#card( + question: [Wie groB kônnen die Winkelsummen regelma8iger n-Ecke sein?], + answer: [ + +]) +#card( + question: [Was ist ein Fundamentalgebiet?], + answer: [ + +]) +#card( + question: [Was ist eine Fuchssche Gruppe?], + answer: [ + +]) +== Orbifaltigkeiten +#card( + question: [Was ist eine Obifaltigkeit?], + answer: [ + +]) +