Computer graphics Vektoren und Matrizen Dr. Ernst Kruijff Institute of Visual Computing 3DMi group Bonn-Rhein-Sieg University of Applied Sciences 3 Dm group
Einführung Transformationen Sources Online: http://www.mathe-online.at/ Slides: teilweise Gabriel Zachmann, Uni Bremen / Clausthal In Skript zusätzliche Erklärungen!
Vektoren Einfach eine Liste von Zahlen schreibweise: a oder a oder a in slides fett : a Zeilenvektor: a = (3, 2, 4) Spaltenvektor: 5 b = 2
Unterschied zwischen Punkten und Vektoren Notation: Punkte mit normalen Großbuchstaben Achtung: Punkt Vektor! Unterschiede: Punkt = Ort im Raum Vektor = Richtung + Länge = Verschiebungsoperator Merkregeln: Punkt + Vektor = Punkt Vektor + Vektor = Vektor Punkt - Punkt = Vektor Punkt + Punkt = undefiniert!
Vektoren: Geometrie zweikomponentige Vektor y a = (5, 3) 5 3 x
Vektoren: Geometrie Verbindungsvektor: von punkt P nach Q q 2 y Q PQ = (q 1 p 1, q 2 p 2 ) p 2 P q 1 p 1 q 2 p 2 p 1 q 1 x
Vektoren: Geometrie Verschiebungsvektor: jeder Punkt P auf ebene verschieben mittels Vektor a. a=(a 1, a 2 ) P(p 1, p 2 ) P (p 1 +a 1, p 2 + a 2 ) y P p 1 P q 1 x
Vektoren: Geometrie Einen Vektor der im Ursprung der Ebene oder des Raumes beginnt, nennt man einen Ortsvektor. Ortsvektor: von punkt O nach A Punkt A=(a 1, a 2 ) = Vektor A=(a 1, a 2 ) y A = OA O = Ursprung Nullvektor 0 = (0,0) kann Ursprung definieren Beispiele für Nullvektoren sind die Zahl Null, oder die Nullmatrix a 2 O a 1 A x
Vektoren: Rechenoperationen Multiplikation eines Vektors mit einem Skalar c (a 1, a 2 ) = (ca 1, ca 2 ) c b 1 = cb 1 b 2 cb 2 b 3 cb 3
Vektoren: Rechenoperationen Summe zweier Vektoren (Addition) (a 1, a 2 ) + (b 1, b 2 ) = (a 1 + b 1, a 2 + b 2 ). c 1 d 1 c 1 + d 1 c 2 + d 2 = c 2 + d 2 c 3 d 3 c 3 + d 3
Vektoren: Rechengesetze Assoziativgesetz der Multiplikation mit einem Skalar: c(ka) = (ck)a. Multiplikation mit der Zahl 1: 1a = a Multiplikation mit der Zahl 0: 0a = 0 Kommutativgesetz der Vektoraddition: a + b = b + a Assoziativgesetz der Vektoraddition: (a + b) + c = a + (b + c) Addition des Nullvektors: a + 0 = a Distributivgesetze: c(a + b) = ca + cb, (c + k)a = ca + ka Das Negative eines Vektors a ist ( 1)a und wird als a bezeichnet.
Vektoren: geom. Bedeutung Rechenoperation Multiplikation für a (Vektor) und c (Skalar) Ist c > 0 à a-pfeil um den Faktor c aufgeblasen (falls c > 1) oder geschrumpft (falls c < 1). Ist c < 0 à a-pfeil um den Faktor c aufgeblasen bzw. geschrumpft, und es kommt noch eine Richtungsumkehr dazu Länge beträgt das c -fache der Länge von a y -3-1 -a 2a a 3 1 2 6 x
Parallele Vektoren Definition: Wir nennen zwei Vektoren (zueinander) parallel (oder kollinear), wenn einer von beiden ein Vielfaches des anderen ist. Beweis? Wird in Form a b ausgedrückt
Vektoren addieren: Geometrie a = (1, 4) und b = (3, 2) a + b = (4, 2) y a 4 b a a + b 2 1 4 ab+bc = ac 3 x b -2
Geometrische Interpretation der Vektor-Addition und - Subtraktion: a b a + b a b a a b b AddiQon SubtrakQon
Vektor: Betrag ist a = (a 1, a 2 ) ebener Vektor, so ist Länge gleich (a 1 2 + a 22 ) y a schreibweise: a = (a 1 2 + a 22 ) a 1 a 2 x Zudem: Abstand zwischen P und Q = P Q
Vektor: Einheitsvektor a ist einen Einheitsvektor, wenn sein Betrag gleich 1 ist à a = 1 Ist a ein beliebiger (von Nullvektor verschiedener) Vektor à jener Vektor, der in dieselbe Richtung wie a zeigt, aber ein Einheitsvektor ist, ist definiert durch a a Normierung: von a nach a a
Vektoren: Normierung a a a Winkelsymmetrale (Winkelhalbierend) a a + b b b b b a und b haben unterschiedliche Beträge bevor Normierung blaue Vektoren: Einheitsvektoren
Senkrechte Projektion Winkelbeziehung zwei Vektoren es entsteht b b > 0 (positiv) : spitzen Winkel b < 0 (negativ) : stumpfen Winkel b = orientierte Projektion Absolutbetrag b = länge Projektion b auf a ProjekQon von b in Richtung a: eine Normale von der Spitze von b bis zu Geraden, entlang der a liegt b b a a
Skalarprodukt Das Skalarprodukt ist eine mathemaqsche Verknüpfung die zwei Vektoren eine Zahl (Skalar) zuordnet Skalarprodukt a und b ab = b' a a b = b' a oder ab > 0 : a und b spitzen Winkel ab < 0 : a und b stumpfen Winkel ab = 0 : a und b aufeinander normal stehen
Skalarprodukt Zusammenhang Skalarprodukt und Winkel b' = b cosθ ab = a b cosθ b θ a cosθ = ab a b
Skalarprodukt b rb a b ersetzt durch r-faches (rb) = b auch r-faches = a(rb) = r a b b rb b summiert mit c (b + c) = b + c = a(b + c) = ab + ac = (a + b)c = ac + bc b b c c a
ab = 0? a und b stehen genau dann aufeinander normal, wenn ab = 0 b Berechnung der Normale: a = a 1 n = a 2 3-1 3 a 1 a 2 a 1 Normalvektor zu a = (3, 1) = n = ( 1, 3)
Das Kreuzprodukt (Vektorprodukt) 0 a x 1 0 b x 1 c = a b = @ a y A @ b y A = a z b z 0 a y b z @ a z b x a x b y 1 a z b y a x b z A a y b x Ergebnis ist ein Vektor, der senkrecht auf beiden Vektoren steht Unterschied mit Skalarprodukt: aus zwei Vektoren folgt ein neuer Vektor! Nützlich zur Erstellung von Koordinatensystemen α b a
Das Kreuzprodukt (Vektorprodukt) Ergebnis ist ein Vektor, der senkrecht auf beiden Vektoren steht Unterschied mit Skalarprodukt: aus zwei Vektoren folgt ein neuer Vektor! Länge des Vektors = Flächeninhalt des von a und b aufgespannten Parallelogramms: b c = a 0 a x b = a b sin Nützlich zur Erstellung von Koordinatensystemen 1 0 b x 1 c = a b = @ a y A @ b y A = a z b z 0 a y b z @ a z b x a x b y 1 a z b y a x b z A a y b x α a
Das Kreuzprodukt / Gesetze a x a = 0 a x b = b x a. (ra) x b = a x (rb) = r a x b a x (b + c) = a x b + a x c und (a + b) x c = a x c + b x c a x 0 = 0 a x b ist genau dann 0, wenn a und b zueinander parallel sind
3D-Koordinatensysteme x y z le^ handed system (Linkssystem) right handed system (Rechtssystem) Achtung: in OpenGL wir verwenden immer das rechtshändige Koordinatensystem! (es sei denn, es steht etwas anderes da)
Orthonormalbasis... Eine Orthonormalbasis ist eine Menge von Vektoren aus ein Vektorraum mit Skalarprodukt welche auf die Länge eins normiert und zueinander orthogonal sind Zwei Geraden oder Ebenen sind Orthogonal wenn sie einen rechten Winkel, also, ein Winkel von 90 o bilden
Orthonormalbasis / Koordinatensystem Wichtig für Darstellung von Punkten, der Position und der Lage Häufig eine Vielzahl unterschiedlicher Koordinatensysteme Für jede Orthonormalbasis u, v, w, (in 3D) gilt: u = v = w =1 u v = v w = u w =0 w = u v p =(p u) u +(p v) v +(p w) w
Vektoren und Matrizen? Matrix: Zweidimensionale Anordnung von Zahlenwerten in Spalten und Zeilen 3x2-Matrix hat 3 Zeilen und 2 Spalten Vektor ist nur ein spezieller Matrix J
Matrizen Operationen Beispiel für Matrixaddition: Beispiel für Skalarmultiplikation:
Matrizen Operationen Beispiel für Matrixmultiplikation:
Matrizen Operationen Beispiel für Matrixmultiplikation: Allgemein: a ij =Element aus Zeile i und Spalte j aus Matrix A
Matrizen Operationen Beispiel für Matrixaddition: Beispiel für Skalarmultiplikation:
Matrizen Operationen Transponierte Matrix: A=(a ij ), A T =(a ji ) Beispiel:
Operationen auf Punkten und Vektoren in homogenen Koord. Punkt + Vektor = Punkt p x p y p z 1 + v x v y v z 0 = p x + v x p y + v y p z + v z 1? Vektor + Vektor = Vektor u x u y u z 0 + v x v y v z 0 = u x + v x u y + v y u z + v z 0 Punkt Punkt = Vektor p x p y p z 1 q x q y q z 1 = p x p y p z 0 q x q y q z
Lineare und affine Abbildung Lineare Transformationen (z.b. Rotation, Skalierung und Scherung) können durch eine 3x3 Matrix dargestellt werden! Affine Transformationen (z.b. Translation), können nicht als 3x3 Matrix dargestellt werden
...Translation ist keine lineare transformation: wir brauchen eine Konstante (keine Variable) die sich nicht mittels normale Matrix- Multiplikation bilden lässt à Affine Transformation nutzen
Homogene Koordinaten im 3D Homogene Darstellung ist nützlich für Transformationen von Punkten und Vektoren Erweitert 3D Punkte und Vektoren zu 4D Punkte und Vektoren Homogener Punkt Homogener Vektor P =(p x, p y, p z, p w ) p w =1 p =(p x, p y, p z, p w ) p w =0
Veranschaulichung im 2D Erweitere Punkt P = (x,y) zu P' = (x,y,1) Assoziiere Linie w.(x,y,1) = (wx, wy, w) mit P' w P'' Homogene Koordinaten 1 P' Affine Ebene w = 1 P x y M.a.W.: ein 3D-Vektor (x, y, w) beschreibt den 2D-Punkt (x/w, y/w) für w 0 den 2D-Vektor (x, y) für w = 0
Homogene Koordination Jeder Punkt auf der Geraden durch den Nullpunkt und durch (x/w, y/w, 1) repräsentiert im homogenen Koordinatensystem denselben kartesischen Punkt (x, y) aus dem gewöhnlichen 2D- Koordinatensystem Homogene Koordinaten y 1 w P' P Affine Ebene x P'' w = 1 Ein kartesisches Koordinatensystem ist ein orthogonales Koordinatensystem...x,y,z...
Kurzer Vorschau: Koordinatensysteme in der Rendering Pipeline Modeling TransformaQons IlluminaQon (Shading) Viewing TransformaQon (PerspecQve / Orthographic) Clipping ProjecQon (to Screen Space) Scan Conversion (RasterizaQon) Visibility / Display Object space - Lokal für jedes Objekte World space - alle Objekte Eye Space / Camera Space Clip Space [-1,-1,-1] [1,1,1] Screen Space - adressiert entsprechend der Hardware
Homogenisierung im 3D Der homogene Punkt P =(x, y, z, w) w =0 beschreibt den Punkt an der Stelle (Kartesisch) P = x w, y w, z w z.b. Kartesische Punkt (1,2) = homogene Koordinaten (1,2,1) oder (2,4,2) Die Kartesische Koordinaten werden berechnet durch Teilung der erste zwei Positionen zu Teilen durch der dritte Wert
Homogene Matrizen für Transformationen in 3D Matrix m 00 m 01 m 02 M = m 10 m 11 m 12 m 20 m 21 m 22 Homogene Form M 4x4 = m 00 m 01 m 02 0 m 10 m 11 m 12 0 m 20 m 21 m 22 0 0 0 0 1
Lineare Abb. (Matrix-Vektor-Multiplikation) 3x3-Form M v = 0 1 0 1 m 00 m 01 m 02 v x @ m 10 m 11 m 12 A @ v y A m 20 m 21 m 22 v z Homogene Form M 4x4 v 0 = 0 1 0 m 00 m 01 m 02 0 Bm 10 m 11 m 12 0 C B @ m 20 m 21 m 22 0A @ 0 0 0 1 v x v y v z 0 1 C A
Affine Abbildungen im 3D 3x3-Form m 00 m 01 m 02 M p + t = m 10 m 11 m 12 m 20 m 21 m 22 p x p y p z + t x t y t z Homogene Form M 4x4 p 4 = m 00 m 01 m 02 t x m 10 m 11 m 12 t y m 20 m 21 m 22 t z 0 0 0 1 p x p y p z 1 Jetzt einfach nur merken: zum verstehen Youtube schauen
Grundtransformationen im 3D Translation Rotation Skalierung
Translation Eines Punktes T t P = 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 p x p y p z 1 = p x + t x p y + t y p z + t z 1
Translation Eines Vektors T t v = 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 v x v y v z 0 = v x v y v z 0
Rotation um x-, y-, z-achse um Winkel R x ( )= 1 0 0 0 0? cos? sin 0 0? sin? cos 0 0 0 0 1 R y ( )= cos 0 sin 0 0 1 0 sin 0 cos 0 0 0 0 1 R z ( )= cos sin 0 0 sin cos 0 0 0 0 1 0 0 0 0 1 O φ
Skalierung Kann zum Vergrößern oder Verkleinern verwendet werden S (s x, s y, s z )= s x 0 0 0 0 s y 0 0 0 0 s z 0 0 0 0 1 s x, s y, s z beschreiben Längenänderung in x-, y-, z-richtung Uniforme (isotrope) Skalierung: s x = s y = s z Nicht-uniforme = anisotrope
Mehr? Wolfgang Hürst / linear and affine transformations https://www.youtube.com/watch? v=4i2s5xhf24o https://www.youtube.com/watch? v=kaw7lxxmsb4 Online: http://www.mathe-online.at/
die gute Nachricht
Pair programming Agile software development: eine(r) programmiert, einer observiert/ begutachtet regelmässiges Wechseln Selber zweier-teams machen! wikimedia commons