Last-Minute-Wiederholung

30 Minuten vor der Klausur. Nur die absoluten Must-knows, ein letzter Skim.

Transformationen (transformations)

  • Punkt als Spaltenvektor, homogene Koordinate w=1w=1; Verkettung ist NICHT kommutativ.
  • Zuerst angewandte Transformation steht RECHTS: M=T⋅R⋅SM = T\cdot R\cdot S skaliert zuerst.
  • Um Referenzpunkt p⃗\vec{p}: M=T(+p⃗)⋅R⋅T(−p⃗)M = T(+\vec{p})\cdot R\cdot T(-\vec{p}) (hin, drehen, zurueck).
  • Perspective divide (Homogenisierung): (X,Y,Z,W)→(X/W,Y/W,Z/W)(X,Y,Z,W)\to(X/W,Y/W,Z/W), W≠0W\neq0.
  • Trap: Szenegraph von Wurzel zum Blatt, Wurzel-Transformation steht links.

Kamera & Projektion (camera & projection)

  • View-Matrix: V=RKamera⋅T(−c⃗)V = R_{Kamera}\cdot T(-\vec{c}) (erst Translation um −-Position, dann Rotation).
  • Strahlensatz auf near-Ebene nn: py′=n⋅pypzp'_y = \dfrac{n\cdot p_y}{p_z} (analog xx).
  • Volle Kette: p′=MProj⋅V⋅MModel⋅pp' = M_{Proj}\cdot V\cdot M_{Model}\cdot p; NDC-Wuerfel ist [−1,1]3[-1,1]^3.
  • gluLookAt(eye, center, up); glm::perspective(fovy, aspect, zNear, zFar).
  • Trap: die volle Projektionsmatrix ist NICHT klausurrelevant.

Rendering-Pipeline & Interpolation

  • Raeume: Local →\to World →\to Camera →\to Clip →\to NDC →\to Fenster (Model, View, Proj, Homog., Viewport).
  • Lineare Interpolation (edge): F(t)=(1−t)F(0)+t F(1)F(t) = (1-t)F(0) + t\,F(1).
  • Baryzentrisch (triangle): wi=Ai/Agesw_i = A_i/A_{ges}, w1+w2+w3=1w_1+w_2+w_3=1.
  • Dreiecksflaeche: A=12 ∣x1(y2−y3)+x2(y3−y1)+x3(y1−y2)∣A=\tfrac12\,|x_1(y_2-y_3)+x_2(y_3-y_1)+x_3(y_1-y_2)|.
  • Tiefentest: glEnable(GL_DEPTH_TEST), glDepthFunc(GL_LESS) -> kleineres z gewinnt.

Shader (GLSL)

  • Pipeline: Vertex →\to (Tesselation, Geometry: optional) →\to Fragment; dazwischen fixe Stufen.
  • Vertex Shader: finale Position gl_Position pro Vertex (Pflicht).
  • Fragment Shader: Farbe pro Pixel/Fragment (Pflicht).
  • Qualifizierer: in / out / uniform; out wird zum Fragment-Shader automatisch interpoliert.
  • Uniform: per Name adressiert, pro Draw-Call konstant.

Beleuchtung nach Phong (Phong illumination)

  • Lo=MaLa+MdLicos⁡α+MsLicos⁡kβ+MeL_o = M_a L_a + M_d L_i\cos\alpha + M_s L_i\cos^{k}\beta + M_e (ambient, diffus, spekular, emission).
  • Diffus (Lambert): cos⁡α=max⁡(0,N⃗⋅L⃗)\cos\alpha = \max(0,\vec N\cdot\vec L).
  • Spekular: cos⁡kβ=max⁡(0,R⃗⋅V⃗)k\cos^{k}\beta = \max(0,\vec R\cdot\vec V)^{k}; grosses kk = kleiner, harter Glanzpunkt.
  • Shading-Granularitaet: Flat (Flaeche) < Gouraud (Ecken) < Phong (Pixel/Fragment).
  • Alle Vektoren N⃗,L⃗,R⃗,V⃗\vec N,\vec L,\vec R,\vec V normiert.

Farbraeume (color spaces)

  • RGB additiv, CMY subtraktiv: CMY=1−RGB\text{CMY}=1-\text{RGB}.
  • HSV: V=max⁡(R,G,B)V=\max(R,G,B), S=max⁡−min⁡max⁡S=\dfrac{\max-\min}{\max} (0 falls max⁡=0\max=0), HH = Winkel (0∘0^\circ Rot, 120∘120^\circ Gruen, 240∘240^\circ Blau).
  • Luma-Gewichtung ca. 0,3R+0,6G+0,1B0{,}3R + 0{,}6G + 0{,}1B (Gruen dominiert).
  • Trap: YCbCr-Koeffizienten sind NICHT klausurrelevant.

Punktoperatoren (point operators)

  • Lineare Grauwerttransformation: g′(i,j)=e(i,j)⋅mult+addg'(i,j) = e(i,j)\cdot\text{mult} + \text{add}.
  • Kontrastspreizung: mult=gmax′−gmin′emax−emin\text{mult}=\dfrac{g'_{max}-g'_{min}}{e_{max}-e_{min}}, dann add=gmin′−mult⋅emin\text{add}=g'_{min}-\text{mult}\cdot e_{min}.
  • mult>1\text{mult}>1 kontrastreicher (Luecken im Histogramm), mult<1\text{mult}<1 kontrastaermer.
  • Inversion: g′=gmax−gg'=g_{max}-g; Gamma: g′=gmax(g/gmax)1/γg'=g_{max}(g/g_{max})^{1/\gamma}.

Lokale Operatoren (local operators)

  • Faltung (convolution): g′(i,j)=∑u,vK(u,v)⋅g(i+u,j+v)g'(i,j)=\sum_{u,v} K(u,v)\cdot g(i+u,j+v); Kern ungerade (eindeutiges Zentrum).
  • Gauss 116(1,2,1;2,4,2;1,2,1)\tfrac{1}{16}(1,2,1;2,4,2;1,2,1) glaettet; Laplace (0,−1,0;−1,4,−1;0,−1,0)(0,-1,0;-1,4,-1;0,-1,0) und Sobel detektieren Kanten.
  • Median: nichtlinear, erhaelt Kanten, entfernt Ausreisser, erzeugt keine neuen Grauwerte.
  • ZHK: N4 (4 Nachbarn) vs N8 (mit Diagonalen); N8 ergibt gleich viele oder WENIGER Komponenten.

Tief durchatmen. Du kennst das alles schon. Viel Erfolg!