Computer graphics Vektorenund Matrizen Dr. Ernst Kruijff Institute of Visual Computing 3DMi group Bonn-Rhein-Sieg University of Applied Sciences 3Dm 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: § Spaltenvektor: a = (3, −2, 4) ⎛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 3 a=(5,3) 5 x Vektoren: Geometrie § Verbindungsvektor: von punkt P nach Q y Q q2 PQ=(q1–p1,q2–p2) p2 P p1 q2–p2 q1–p1 q1 x Vektoren: Geometrie § Verschiebungsvektor: jeder Punkt P auf ebene verschieben mittels Vektor a. y a=(a1,a2) P(p1,p2) P’(p1+a1,p2+a2) P’ P p1 q1 x EinenVektorderimUrsprungderEbeneoder desRaumesbeginnt,nenntmaneinen Ortsvektor. Vektoren: Geometrie § Ortsvektor: von punkt O nach A PunktA=(a1,a2)=VektorA=(a1,a2) y → A=OA O=Ursprung A a2 O Nullvektor0=(0,0)kannUrsprungdefinieren BeispielefürNullvektorensinddieZahlNull,oderdieNullmatrix a1 x Vektoren: Rechenoperationen § Multiplikation eines Vektors mit einem Skalar c(a1,a2)=(ca1,ca2) ⎛b1⎞ =⎛cb1⎞ c ⎜b2⎟ ⎜cb2⎟ ⎝b3⎠ ⎝cb3⎠ Vektoren: Rechenoperationen § Summe zweier Vektoren (Addition) (a1,a2)+(b1,b2)=(a1+b1,a2+b2). ⎛c1⎞⎛d1⎞⎛c1+d1⎞ ⎜c2⎟+⎜d2⎟= ⎜c2+d2⎟ ⎝c3⎠⎝d3⎠ ⎝c3+d3⎠ 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 y -1 Längebeträgtdas |c|-fachederLängevona -3 a -a 3 2a 6 1 2 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) ab+bc = ac b y a 4 a a+b 1 4 3 b x -2 2 § Geometrische Interpretation der Vektor-Addition und Subtraktion: a b + a a AddiQon b a b a b b SubtrakQon Vektor: Betrag ist a = (a1, a2) ebener Vektor, so ist Länge gleich y √(a12 + a22) a schreibweise: |a| = √ (a12 + a22) a1 a2 Zudem:AbstandzwischenPundQ=|P−Q| x 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 Winkelsymmetrale (Winkelhalbierend) a |a| b b |b| a b + |b| |a| aundbhabenunterschiedlicheBeträgebevorNormierung blaueVektoren:Einheitsvektoren Senkrechte Projektion ProjekQonvonb inRichtunga:eineNormale vonderSpitzevonbbiszu Geraden,entlangderaliegt § Winkelbeziehung zwei Vektoren § es entsteht b‘ b § b‘ > 0 (positiv) : spitzen Winkel § b‘ < 0 (negativ) : stumpfen Winkel § b‘ = „orientierte Projektion“ § Absolutbetrag b‘ = länge Projektion b auf a a b a Skalarprodukt DasSkalarproduktisteinemathemaQsche VerknüpfungdiezweiVektoreneineZahl (Skalar)zuordnet § Skalarprodukt a und b ab=b'|a|oder a·b=b'|a| § 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θ cosθ = ab |a||b| |b| θ a rb Skalarprodukt b b ersetzt durch r-faches (rb) = b‘ auch r-faches = a(rb) = r a b b summiert mit c (b + c) = b‘ + c‘ = a(b + c) = ab + ac = (a + b)c = ac + bc a b’ rb’ c b a c’ b’ ab = 0? § a und b stehen genau dann aufeinander normal, wenn ab = 0 b § Berechnung der Normale: a = ⎛ a1 ⎞ n = ⎛ −a2 ⎞ ⎝ a2 ⎠ ⎝ a1 ⎠ a 3 Normalvektorzua=(3,1)=n=(−1,3) -1 3 1 Das Kreuzprodukt (Vektorprodukt) 0 1 0 1 0 ax bx ay bz c = a ⇥ b = @ay A ⇥ @by A = @ az bx az bz ax by 1 az by ax bz A ay bx § Ergebnis ist ein Vektor, der senkrecht auf beiden Vektoren steht § Unterschied mit Skalarprodukt: aus zwei Vektoren folgt ein neuer Vektor! b § Nützlich zur Erstellung von Koordinatensystemen α a Das Kreuzprodukt (Vektorprodukt) 0 1 0 1 0 ax bx ay bz c = a ⇥ b = @ay A ⇥ @by A = @ az bx az bz ax by 1 az by ax bz A ay bx § 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 b| = |a|·|b|· sin § Nützlich zur Erstellung von Koordinatensystemen a Das Kreuzprodukt / Gesetze axa=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 xc § a x 0 = 0 § a x b ist genau dann 0, wenn a und b zueinander parallel sind § § § § 3D-Koordinatensysteme x y z le^handedsystem (Linkssystem) righthandedsystem (Rechtssystem) Achtung:inOpenGLwirverwendenimmerdasrechtshändige Koordinatensystem!(esseidenn,esstehtetwasanderesda) Orthonormalbasis... EineOrthonormalbasisisteine MengevonVektorenausein VektorraummitSkalarprodukt welcheaufdieLängeeinsnormiert undzueinanderorthogonalsind ZweiGeradenoderEbenensind Orthogonalwennsieeinenrechten Winkel,also,einWinkelvon90o 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: § aij=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=(aij), AT=(aji) § Beispiel: Operationen auf Punkten und Vektoren in homogenen Koord. ⇥ ⇥ ⇥ ⇥ ⇥ ⇥ ⇥ px vx px ⇧py ⌃ ⇧vy ⌃ ⇧py ⇧ ⌃+⇧ ⌃=⇧ ⇤pz ⌅ ⇤vz ⌅ ⇤ pz § Punkt + Vektor = Punkt 0 1 + vx + vy ⌃ ⌃ + vz ⌅ 1 ux vx ux ⇧uy ⌃ ⇧vy ⌃ ⇧uy ⇧ ⌃+⇧ ⌃=⇧ § Vektor + Vektor = Vektor ⇤uz ⌅ ⇤vz ⌅ ⇤uz 0 0 + vx + vy ⌃ ⌃ + vz ⌅ 0 § Punkt – Punkt = Vektor px ⇧py ⌃ ⇧ ⌃ ⇤pz ⌅ 1 ⇥ ⇥ px qx qx ⇧qy ⌃ ⇧py qy ⌃ ⌃ ⇧ ⌃=⇧ ⇤qz ⌅ ⇤ pz qz ⌅ 0 1 ? 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 MatrixMultiplikation 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 P = (px , py , pz , pw ) pw = 1 § Homogener Vektor p = (px , py , pz , pw ) pw = 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 Homogene Koordinaten P'' AffineEbene 1 w =1 P' P 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 x 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 2DKoordinatensystem w Homogene Koordinaten P'' AffineEbene 1 w =1 P' P x y EinkartesischesKoordinatensystemistein orthogonalesKoordinatensystem...x,y,z... Kurzer Vorschau: Koordinatensysteme in der Rendering Pipeline Modeling TransformaQons IlluminaQon (Shading) ViewingTransformaQon (PerspecQve/Orthographic) Clipping ProjecQon (toScreenSpace) ScanConversion (RasterizaQon) Visibility/Display Objectspace -Lokalfürjedes Objekte Worldspace -alleObjekte EyeSpace/ CameraSpace ClipSpace [-1,-1,-1]…[1,1,1] ScreenSpace -adressiertentsprechend derHardware Homogenisierung im 3D § Der homogene Punkt P = (x , y , z , w ) w = 0 beschreibt den Punkt an der Stelle (Kartesisch) x y z⇥ P= , , w w 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 m00 M = ⇤m10 m20 m01 m11 m21 ⇥ m02 m12 ⌅ m22 § Homogene Form M4x 4 m00 ⇧m10 =⇧ ⇤m20 0 m01 m11 m21 0 m02 m12 m22 0 ⇥ 0 0⌃ ⌃ 0⌅ 1 Lineare Abb. (Matrix-Vektor-Multiplikation) § 3x3-Form 0 m00 m01 M ·v = @m10 m11 m20 m21 § Homogene Form 0 10 1 m02 vx m12 A · @vy A m22 vz m00 m01 m02 Bm10 m11 m12 0 M4x4 ·v = B @m20 m21 m22 0 0 0 10 1 0 vx B C 0C C · Bv y C 0A @ v z A 1 0 Affine Abbildungen im 3D § 3x3-Form m00 M ·p + t = ⇤m10 m20 m01 m11 m21 ⇥ ⇥ m02 px tx m12 ⌅ · ⇤py ⌅ + ⇤ty ⌅ pz tz m22 § Homogene Form m00 ⇧m10 M4x 4 ·p4 = ⇧ ⇤m20 0 ⇥ m01 m11 m21 0 m02 m12 m22 0 ⇥ ⇥ tx px ⇧ ⌃ ty ⌃ ⌃ · ⇧py ⌃ tz ⌅ ⇤pz ⌅ 1 1 Jetzteinfachnurmerken:zumverstehenYoutubeschauen Grundtransformationen im 3D § Translation § Rotation § Skalierung Translation § Eines Punktes 1 ⇧0 Tt · P = ⇧ ⇤0 0 0 1 0 0 ⇥ ⇥ 0 tx px px ⇧ ⌃ ⇧ 0 ty ⌃ ⌃ · ⇧py ⌃ = ⇧py 1 tz ⌅ ⇤pz ⌅ ⇤ pz 0 1 1 ⇥ + tx + ty ⌃ ⌃ + tz ⌅ 1 Translation § Eines Vektors 1 ⇧0 Tt ·v = ⇧ ⇤0 0 0 1 0 0 ⇥ ⇥ ⇥ 0 tx vx vx ⇧ ⌃ ⇧ ⌃ 0 ty ⌃ ⌃ · ⇧v y ⌃ = ⇧v y ⌃ 1 t z ⌅ ⇤ v z ⌅ ⇤ vz ⌅ 0 1 0 0 Rotation um x-, y-, z-Achse um Winkel 1 ⇧0 Rx ( ) = ⇧ ⇤0 0 0 ? cos ? sin 0 cos ⇧ 0 Ry ( ) = ⇧ ⇤ sin 0 cos ⇧ sin Rz ( ) = ⇧ ⇤ 0 0 0 ? sin ? cos 0 0 sin 1 0 cos 0 0 sin cos 0 0 0 0 1 0 ⇥ 0 0⌃ ⌃ 0⌅ 1 ⇥ 0 0⌃ ⌃ 0⌅ 1 ⇥ 0 0⌃ ⌃ 0⌅ 1 φ O Skalierung § Kann zum Vergrößern oder Verkleinern verwendet werden ⇥ sx ⇧0 S (sx , sy , sz ) = ⇧ ⇤0 0 0 sy 0 0 0 0 sz 0 0 0⌃ ⌃ 0⌅ 1 § sx, sy, sz beschreiben Längenänderung in x-, y-, z-Richtung § Uniforme (isotrope) Skalierung: sx = sy = sz § 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 ©wikimediacommons § Selber zweier-Teams machen!