Gebruik matrices

Gebruik matrices
• In Graphics worden lineaire transformaties gebruikt
• Deze lineaire transformaties gerepresenteerd in matrixvorm
• Matrixvermenigvuldiging voor schalen,
rotaties
1/55
translaties en
Februari, 2015
Lineaire transformatie in 2D
Definitie 2.1.1: Een afbeelding T van R2 naar R2 heet een
lineaire transformatie als er een 2 × 2 matrix A bestaat zo dat
T (p) = Ap
voor alle p in R2.
Matrix A beeldt vector p af op een nieuwe vector p′ = Ap.
2/55
′
x
y′
=A
x
y
Februari, 2015
Lineaire transformatie in 2D
p′ = Ap
′
x
y′
=
a11 a12
a21 a22
x
y
=
a11x + a12y
a21x + a22y
x′ = a11x + a12y
y ′ = a21x + a22y
3/55
Februari, 2015
Voorbeeld lineaire transformatie
x′ = 2x + 3y
y ′ = x + 4y
Deze afbeelding wordt gerepresenteerd door 2 × 2 matrix:
4/55
2 3
1 4
Februari, 2015
Opgave 6
Gegeven de volgende matrix:
0 1
.
−1 0
1. Waarworden
de volgende
vectoren in overgevoerd?
1
0
1
,
en
0
2
1
2. Wat doet deze transformatie met het punt (x, y)?
3. Dezelfde vraag voor matrix
5/55
1 0
.
0 1
Februari, 2015
2D transformaties
In Graphics zijn meeste transformaties lineair:
x′ = a11x + a12y
y ′ = a21x + a22y
′
x
y′
=
a11 a12
a21 a22
x
y
=
a11x + a12y
a21x + a22y
Deze lineaire transformaties gebruikt voor
schaling, shear en rotatie
6/55
Februari, 2015
Schaling in matrixvorm
Schaling
x′ = sxx,
y ′ = sy y
Schaling in matrixvorm:
′ x
sx 0
x
sx x
=
=
′
y
0 sy
y
sy y
Schaling met schalingsmatrix S:
p′ = Sp
7/55
Februari, 2015
Uniforme schaling in x en y
8/55
sx 0
0 sy
=
0.5 0
0 0.5
Februari, 2015
Niet-uniforme schaling in x en y
9/55
sx 0
0 sy
=
0.5 0
0 1.5
Februari, 2015
Shear in matrixvorm
Horizontale shear
x′ = x + sy,
y′ = y
Horizontale shear in matrixvorm:
′ x
1 s
x
x + sy
=
=
′
y
0 1
y
y
Shear met matrix S:
p′ = Sp
10/55
Februari, 2015
Horizontale shear
1 s
1 1
=
0 1
0 1
Verticale lijnen gaan over in lijnen met hoek 45◦
11/55
Februari, 2015
Eigenwaarden bepalen zonder rekenen
Gegeven: horizontale shear
1 s
0 1
Gevraagd: wat zijn eigenwaarden en eigenvectoren van deze
afbeelding?
1 s
x
x
=λ
0 1
y
y
12/55
Februari, 2015
Eigenwaarden en eigenvectoren shear
• eigenvector
13/55
1
0
1 s
0 1
met eigenwaarde λ = 1
Februari, 2015
Eigenwaarden bepalen met rekenen
1 s
0 1
Karakteristieke vergelijking:
det
0 s
0 0
14/55
1−λ
s
0
1−λ
x
y
=
0
0
= (1 − λ)2 = 0 ⇒ λ = 1
, dus eigenvector is
1
0
Februari, 2015
Shear in matrixvorm
Verticale shear
x′ = x,
y ′ = sx + y
Verticale shear in matrixvorm:
′ x
1 0
x
x
=
=
′
y
s 1
y
sx + y
Shear met matrix S:
p′ = Sp
15/55
Februari, 2015
Verticale shear
1 0
1 0
=
s 1
1 1
Horizontale lijnen gaan over in lijnen met hoek 45◦
16/55
Februari, 2015
Rotatie in 2D
xa
Gegeven: vector a =
ya
xb
Gevraagd: vector b =
na rotatie over hoek φ
yb
17/55
Februari, 2015
Rotatie in 2D
a=
b=
xa
ya
xb
yb
=
=
r cos α
r sin α
r cos(α + φ)
r sin(α + φ)
xb = r cos(α + φ) = r cos α cos φ − r sin α sin φ
yb = r sin(α + φ) = r sin α cos φ + r cos α sin φ
xb = xa cos φ − ya sin φ
yb = ya cos φ + xa sin φ
18/55
Februari, 2015
Rotatie in matrixvorm
Rotatie
xb = xa cos φ − ya sin φ
yb = xa sin φ + ya cos φ
Rotatie in matrixvorm:
′ x
cos φ − sin φ
x
=
′
y
sin φ cos φ
y
Rotatie met matrix R:
p′ = Rp
19/55
Februari, 2015
Rekenvoorbeeld 2D rotatie
Rotatie over 45◦:
cos(π/4) − sin(π/4)
0.707 −0.707
R=
=
sin(π/4)
cos(π/4)
0.707
0.707
1
Gegeven: vector p =
0
Gevraagd: beeldvector p′
0.707 −0.707
1
0.707
′
p = Rp =
=
0.707
0.707
0
0.707
⇒ tegen klok in
20/55
Februari, 2015
Rotatie tegen klok in
21/55
cos(π/4) − sin(π/4)
sin(π/4)
cos(π/4)
=
0.707 −0.707
0.707
0.707
Februari, 2015
Rotatie met klok mee
Rotatie met klok mee over hoek −π/6
cos(−π/6) − sin(−π/6)
0.866
0.5
=
sin(−π/6)
cos(−π/6)
−0.5 0.866
22/55
Februari, 2015
Definities: Orthonormaal en orthogonaal
• Een stelsel vectoren x1, x2, . . . , xn zijn orthogonaal als voor
elk tweetal vectoren uit dat stelsel geldt dat hun inproduct
nul is.
• Een stelsel vectoren x1, x2, . . . , xn zijn orthonormaal als
voor elk tweetal vectoren uit dat stelsel geldt dat hun
inproduct nul is en als elke vector lengte 1 heeft.
• Een vierkante matrix A heet orthogonaal als AT = A−1
Stelling: De determinant van orthogonale matrix is +1 of -1.
23/55
Februari, 2015
Rotatiematrix is orthogonaal met det = 1
R=
cos θ − sin θ
sin θ
cos θ
1. Kolommen van matrix zijn orthogonaal
cos φ(− sin φ) + sin φ cos φ = 0
2. Elke kolom heeft lengte 1:
cos2 φ + sin2 φ = 1 en (− sin φ)2 + cos2 φ = 1
⇒ rotatiematrix is orthogonale matrix
24/55
Februari, 2015
Eigenwaarden van 2D rotatiematrices
Bereken eigenwaarden van R. Voor welke waarden van θ zijn
er eigenwaarden?
cos θ − sin θ
R=
sin θ cos θ
Karakteristieke vergelijking:
cos θ − λ − sin θ
= λ2 − 2λ cos θ + 1 = 0
det
sin θ
cos θ − λ
Er zijn wortels als ∆ = b2 − 4ac = (2 cos θ)2 − 4 > 0
25/55
Februari, 2015
Eigenwaarden van 2D rotatiematrices
wortels als (2 cos θ)2 − 4 > 0 ⇒ cos2 θ ≥ 1 ⇒ cos θ = ±1
Dus alleen eigenwaarden en eigenvectoren in twee gevallen:
1. θ = 0,
2. θ = π,
cos θ − sin θ
sin θ cos θ
cos θ − sin θ
sin θ cos θ
=
=
1 0
0 1
, λ = 1, Ix = x
−1 0
0 −1
, λ = −1, −Ix = −x
In andere gevallen complexe eigenwaarden
26/55
Februari, 2015
Opgave 7
1. Is de volgende matrix orthogonaal? A =
2. Wat zijn de beeldvectoren van
1
0
en
cos θ
sin θ
sin θ − cos θ
0
1
voor θ =
π/6?
3. Is A een rotatie voor θ = π/6?
4. Bereken de eigenwaarden en eigenvectoren om te bepalen
wat deze transformatie doet
27/55
Februari, 2015
Spiegeling in matrixvorm
Spiegeling om x-as
x′ = x,
y ′ = −y
Spiegeling om x-as in matrixvorm:
′ x
1
0
x
x
=
=
′
y
0 −1
y
−y
28/55
Februari, 2015
Spiegeling om x-as
29/55
1
0
0 −1
Februari, 2015
Spiegeling in matrixvorm
Spiegeling om y-as
x′ = −x,
y′ = y
Spiegeling om y-as in matrixvorm:
′ x
−1 0
x
−x
=
=
′
y
0 1
y
y
30/55
Februari, 2015
Spiegeling om y-as
31/55
−1 0
0 1
Februari, 2015
Spiegeling om lijn x = y
Spiegeling om lijn x = y
x′ = y
y′ = x
Spiegeling om lijn x = y in matrixvorm:
′ x
0 1
x
y
=
=
′
y
1 0
y
x
32/55
Februari, 2015
Eigenwaarden van 2D spiegelingsmatrix
Bereken eigenwaarden van S.
S=
cos θ sin θ
sin θ − cos θ
Karakteristieke vergelijking:
det
cos θ − λ
sin θ
sin θ
− cos θ − λ
= λ2 − 1 = (λ − 1)(λ + 1) = 0
Eigenwaarden λ1 = 1 en λ2 = −1
33/55
Februari, 2015
Eigenwaarden van 2D spiegelingsmatrix
1. λ1 = 1,
cos θ − 1
sin θ
sin θ
− cos θ − 1
x
y
=
0
0
⇒
eigenvector op lijn y = tan 2θ . x ⇒ symmetrie-as
2. λ2 = −1,
cos θ + 1
sin θ
sin θ
− cos θ + 1
=
x
y
=
0
0
eigenvector op lijn x = − tan θ2 . y ⇒ loodrecht op
symmetrie-as
34/55
Februari, 2015
Samenstelling van 2D transformaties
In Graphics vaak opeenvolgende transformaties op object
1. Eerst schaling S: p2 = Sp1
2. Dan rotatie R: p3 = Rp2
Andere notatie:
p3 = R(Sp1) = RSp1 (eerst S en dan R)
35/55
Februari, 2015
Product van twee matrices
−1 0
2 1
Gegeven matrix A =
en matrix B =
.
1 1
1 1
−1 0
2 1
−2 −1
Het product AB is
=
1 1
1 1
3
2
Wat is BA?
Het product BA is
2 1
1 1
−1 0
1 1
=
−1 1
0 1
AB 6= BA, matrixvermenigvuldiging is niet commutatief
36/55
Februari, 2015
Uitvoeren van productmatrix
0.707 −0.707
0.707
0.707
37/55
1.0
0
0 0.5
=
0.707 −0.353
0.707
0.353
Februari, 2015
Volgorde transformaties maakt uit
38/55
Februari, 2015
Opgave 8
1. Wat is
1.0
0
0 0.5
0.7 −0.7
?
0.7
0.7
2. Wat is de samengestelde matrix van
eerst schaling(2, 3), dan rotatie(45◦) en dan shear-x(0.2)?
3. Wat is de samengestelde matrix van
eerst shear-x(0.2), dan schaling(2, 3) en dan rotatie(45◦)?
39/55
Februari, 2015
Antwoord opgave 8
1.
1.0
0
0 0.5
0.7 −0.7
0.7
0.7
=
0.7 −0.7
0.35 0.35
2. schaling(2, 3), dan rotatie(45◦) dan shear-x(0.2)?
1
0
0.2
1
0.7
0.7
−0.7
0.7
3. shear-x(0.2),
40/55
0.7
0.7
−0.7
0.7
2
0
dan
0
3
1
0
2
0
0
3
=
1
0
0.2
1
1.4
1.4
schaling(2, 3)
0.2
1
=
1.4
1.4
−2.1
2.1
−2.1
2.1
dan
1
0
0.2
1
=
1.68
1.4
−1.68
2.1
rotatie(45◦)?
=
1.4
1.4
−1.82
2.38
Februari, 2015
Opgave 9
1. Gegeven de volgende afbeelding:
′
x =
′
y =
y
x
Welke matrix hoort bij deze afbeelding? Wat is deze afbeelding meetkundig gezien?
2. Gegeven de volgende afbeelding:
x′ =
′
y =
x
−y
Welke matrix hoort bij deze afbeelding? Wat is deze afbeelding meetkundig gezien?
3. Welke matrix correspondeert met afbeelding 1 gevolgd door afbeelding 2?
4. En andersom?
5. Wat doen de afbeeldingen in 3 en 4?
41/55
Februari, 2015
2D transformaties in matrixvorm
sx 0
x
sx x
=
0 sy
y
sy y
x + sy
1 s
x
2D x-shear: 0 1
=
y
y
1 0
x
x
2D y-shear: s 1
=
y
y + sx
x cos φ − y sin φ
x
cos φ − sin φ
=
2D rotatie:
x sin φ + y cos φ
y
sin φ
cos φ
2D schaling:
Een translatie is een veel voorkomende transformatie in
Graphics
Hoe moet dat in matrixvorm?
42/55
Februari, 2015
Translatie
Voor translatie hebben we vector-optelling:
′
x
y′
=
x
y
+
dx
dy
Hoe noteren we dat in matrixvorm?
′ x
1 0
x
dx
=
+
′
y
0 1
y
dy
Met homogene co¨
ordinaten matrixvermenigvuldiging
43/55
Februari, 2015
Homogene co¨
ordinaten
Voeg aan elk 2D punt z
kolom toe:
 

1 0
x′
 ′  
 y = 0 1
0 0
1
= 1 toe en voeg aan matrix rij en
Translatiematrix T:
p′ = Tp
44/55




x + dx
x
dx

  
dy   y  =  y + dy 
1
1
1
Februari, 2015
Rekenvoorbeeld 2D translatie
Translatie met d =
Waar gaat p =
4
5
3
−4
in over?





1 0 3
4
7

   
p′ = Tp =  0 1 −4   5  =  1 
0 0 1
1
1
45/55
Februari, 2015
2D transformaties in homogene vorm
2D
2D
2D
2D
46/55





sx 0 0
x
sx x
schaling:  0 sy 0   y  =  sy y 
0 0 1
1
1


 

1 s 0
x
x + sy
x-shear:  0 1 0   y  =  y 
0 0 1
1
1


 

cos φ − sin φ 0
x
x cos φ − y sin φ
rotatie:  sin φ cos φ 0   y  =  x sin φ + y cos φ 
0
0 1
1
1


 

1 0 dx
x
x + dx
translatie:  0 1 dy   y  =  y + dy 
0 0 1
1
1
Februari, 2015
Voorbeeld
Wat is matrix voor rotatie over 90◦ om het punt (2, 1) (tegen de klok in)?
1. transleer zo dat rotatiecentrum op de oorsprong terecht komt
2. roteer om de oorsprong
3. doe de inverse translatie
De gevraagde transformatie is: T (2, 1)R(90◦)T (−2, −1)



 

1 0 2
0 −1 0
1 0 −2
0 −1 3
 0 1 1   1 0 0   0 1 −1  =  1 0 −1 
0 0 1
0 0 1
0 0 1
0 0
1
Waar gaat het punt (3, 2) in over door deze transformatie?
47/55
Februari, 2015
Opgave 10
1. Wat is de matrix voor een spiegeling in de lijn y = −x?
2. Wat is de matrix voor een spiegeling in de lijn y = −x + 5?
48/55
Februari, 2015
2D window transformatie
Voer rechthoek (a, b)(A, B) over in (c, d)(C, D)
49/55
Februari, 2015
rechthoek (a, b)(A, B) → (c, d)(C, D)
1. Transleer punt (a, b) naar oorsprong
2. Schaal rechthoek naar juiste grootte
3. Transleer oorsprong naar (c, d)
transformatie =
C−c D−d
, B−b ) transleer (−a, −b)
transleer (c, d) schaal ( A−a
50/55
Februari, 2015
rechthoek (a, b)(A, B) → (c, d)(C, D)
C−c D−d
, B−b ) transleer (−a, −b) =
transleer (c, d) schaal ( A−a


1 0 c
 0 1 d 
0 0 1


51/55
C−c
A−a
0
0
C−c
A−a
0
0
0
D−d
B−b
0
0
D−d
B−b
0


0
1 0 −a
0   0 1 −b  =
0 0 1
1
cA−Ca 
A−a
dB−Db
B−b
1

Februari, 2015
Inverse matrix
Definitie: De inverse matrix A−1 van een matrix A is de
matrix waarvoor geldt: AA−1 = I
Voorbeeld:
−1 −2
1
1 2
=
omdat
1.5 −0.5
3 4
1 2
−2
1
1 0
=
3 4
1.5 −0.5
0 1
52/55
Februari, 2015
Inverse van transformaties





sx 0 0
x
sx x
1. 2D schaling:  0 sy 0   y  =  sy y 
0
0 1
1
1





1/sx
0
0
x
1/sx x
Inverse:  0
1/sy 0   y  =  1/sy y 
0
0
1
1
1





x + sy
1 s 0
x

y
2. 2D x-shear:  0 1 0   y  = 
1
0 0 1
1





x − sy
1 −s 0
x

y
1
0  y  = 
Inverse:  0
1
0
0
1
1
53/55
Februari, 2015





x cos φ − y sin φ
x
cos φ − sin φ 0
cos φ 0   y  =  x sin φ + y cos φ 
3. 2D rotatie:  sin φ
1
0
0 1
1





cos φ sin φ 0
x
x cos φ + y sin φ
Inverse:  − sin φ cos φ 0   y  =  −x sin φ + y cos φ 
0
0 1
1
1





x + dx
x
1 0 dx
4. 2D translatie:  0 1 dy   y  =  y + dy 
1
0 0 1
1





x − dx
x
1 0 −dx
Inverse:  0 1 −dy   y  =  y − dy 
1
1
0 0
1
54/55
Februari, 2015
Opgave 11
1. Waarom worden in Graphics bij transformaties homogene co¨ordinaten
gebruikt?
2. Welke transformaties zijn er nodig om een rechthoek met hoekpunten
(1, 1) (linksonder) en (3, 3) (rechtsboven) om te zetten naar een
rechthoek met hoekpunten (0, 0) (linksonder) en (4, 4) (rechtsboven)?
3. Geef de matrix T die deze transformatie representeert.
4. Wat is de inverse matrix van T ?
5. Waar komt het punt (2, 2) terecht als we de inverse van T hierop
uitvoeren?
55/55
Februari, 2015