Vektoren und Matrizen

Werbung
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!
Herunterladen