![Page 1: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/1.jpg)
CS-184: Computer Graphics
Lecture 4: 2D Transformations Maneesh Agrawala
University of California, Berkeley
Slides based on those of James O’Brien and Adrien Treuille
Announcements
Assignment 2: due Fri Sep 10 by 11pm
Assignment 3: due Fri Sep 17 by 11pm
3
![Page 2: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/2.jpg)
4
Today
2D Transformations• “Primitive” Operations• Scale, Rotate, Shear, Flip, Translate
• Homogenous Coordinates• SVD• Start thinking about rotations...
5
Introduction
Transformation: An operation that changes one configuration into another
For images, shapes, etc.Geometric transformation maps positions that define object to new positions
Linear transformation means the transformation is defined by a linear function... which is what matrices are good for.
6
Some Examples
Original
![Page 3: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/3.jpg)
7
Some Examples
Images from Conan The Destroyer, 1984
Original
Uniform Scale
Rotation
Nonuniform Scale
Shear
8
Mapping Functionf(p) = p� p = (x,y)
p� = (x�,y�)Maps points in original image to point in transformed image
Original Transformed
f
f−1
9
Mapping Functionf(p) = p� p = (x,y)
p� = (x�,y�)Maps points in original image to point in transformed image
Original Transformed
c(p�)
f−1
= c(f−1(p�)) = c(p)c(p) = [195,120,58]
![Page 4: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/4.jpg)
10
Linear -vs- Nonlinear
Linear (shear)
Nonlinear (swirl)
11
Geometric -vs- Color Space
Linear Geometric(flip)
Color Space Transform(edge finding)
12
Instancing
RHW
M.C. Escher, from Ghostscript 8.0 Distribution
![Page 5: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/5.jpg)
13
Instancing
Carlo Sequin
14
Instancing
RHW
Reuse geometric descriptions
Saves memory
15
Linear is Linear
Composing two linear function is still linear
Transform polygon by transforming vertices
f (x) = a+bx g( f ) = c+d f
g(x) = c+d f (x) = c+ad+bdx
g(x) = a� +b�x
![Page 6: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/6.jpg)
16
Points in SpaceRepresent point in space by vector in • Relative to some origin!• Relative to some coordinate axes!
Later we’ll add something extra...
Rn
Origin, 0
2
4
T]4,2[=pp= [4,2]T
17
Linear Functions in 2D
x� = f (x,y) = c1+ c2x+ c3yy� = f (x,y) = d1+d2x+d3y
�x�
y�
�=
�txty
�+
�Mxx MxyMyx Myy
�·�xy
�
x� = t+M ·x
18
Linear is LinearPolygons defined by points
Edges defined by interpolation between two points
Interior defined by interpolation between all points
Linear interpolation
![Page 7: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/7.jpg)
19
Linear is LinearComposing two linear function is still linear
Transform polygon by transforming vertices
Scale
20
Basic Transformations
Basic transforms are: rotate, scale, and translate
Shear is a composite transformation!
Rotate
Translate
Scale
Shear -- not really “basic”
Uniform
/isotr
opic
Non-un
iform
/aniso
tropic
21
Rotations
Rotate
pp ⎥⎦
⎤⎢⎣
⎡ −=
)Cos()()()Cos(
'θθ
θθ
SinSin
x
.707 -.707
.707 .707
y
x
45 degree rotation
![Page 8: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/8.jpg)
22
Rotations
Rotations are positive counter-clockwise
Consistent w/ right-hand rule
Don’t be different...
Note: • rotate by zero degrees give identity• rotations are modulo 360 (or )2π
23
Rotations
Preserve lengths and distance to origin
Rotation matrices are orthonormal
In 2D rotations commute... • But in 3D they won’t!
Det(R) = 1 �=−1
24
Scales
0.5 0
0 1.5
x
y
x
y
x
0.5 0
0 0.5
y
x
y
Scale
Uniform/isotropic
Non-uniform/anisotropic
pp ⎥⎦
⎤⎢⎣
⎡=
y
x
ss0
0'
![Page 9: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/9.jpg)
25
ScalesDiagonal matrices• Diagonal parts are scale in X and scale in Y directions• Negative values flip• Two negatives make a positive (180 deg. rotation)• Really, axis-aligned scales
Not axis-aligned...
26
Shears
Shear
pp ⎥⎦
⎤⎢⎣
⎡=
11
'xy
yx
HH
x
1 1
0 1
y
x
y
27
Shears
Shears are not really primitive transforms
Related to non-axis-aligned scales
More shortly.....
![Page 10: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/10.jpg)
28
TranslationThis is the not-so-useful way:
Translate
⎥⎦
⎤⎢⎣
⎡+=
y
x
tt
pp'
Note that its not like the others.
29
Arbitrary MatricesFor everything but translations we have:
Soon, translations will be assimilated as well
What does an arbitrary matrix mean?
x� = A ·x
30
Singular Value DecompositionFor any matrix, A , we can write SVD:
where Q and R are orthonormal and S is diagonal
Can also write Polar Decomposition
where Q is still orthonormal
TQSRA =
TQRSRA =
not the same Q
![Page 11: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/11.jpg)
31
Decomposing MatricesWe can force Q and R to have Det=1 so they are rotations
Any matrix is now:• Rotation:Rotation:Scale:Rotation• See, shear is just a mix of rotations and scales
32
CompositionMatrix multiplication composites matrices
Several transformations composited to one
Translations still left out...
BApp ='“Apply A to p and then apply B to that result.”
CppBAApBp === )()('
uCpBtBAptApBp +=+=+= )('
33
Composition
shear
x
y
x
y
y
x
x
shear
shear
Transformations built up from others
SVD builds from scale and rotations
Also build other ways
i.e. 45 deg rotation built from shears
![Page 12: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/12.jpg)
34
Move to one higher dimensional space
• Append a 1 at the end of the vectors
• For directions the extra coordinate is a zero
Homogeneous Coordinates
⎥⎦
⎤⎢⎣
⎡=
y
x
pp
p⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
1
~y
x
pp
p
35
Homogeneous Translation
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
11001001
'~ y
x
y
x
pp
tt
p
pAp ~~'~ =
The tildes are for clarity to distinguish homogenized from
non-homogenized vectors.
36
Homogeneous Others
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡=
10000
~ AA
Now everything looks the same...Hence the term “homogenized!”
![Page 13: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/13.jpg)
37
Compositing Matrices
Rotations and scales always about the origin
How to rotate/scale about another point?
-vs-
38
Rotate About Arb. PointStep 1: Translate point to origin
Translate (-C)
39
Rotate About Arb. PointStep 1: Translate point to origin
Step 2: Rotate as desired
Translate (-C)
Rotate (θ)
![Page 14: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/14.jpg)
40
Don’t negate the 1...
Step 1: Translate point to origin
Step 2: Rotate as desired
Step 3: Put back where it was
Rotate About Arb. Point
Translate (-C)
Rotate (θ)
Translate (C)
pApRTTp ~~)('~ =−=
41
Scale About Arb. AxisDiagonal matrices scale about coordinate axes only:
Not axis-aligned
42
Scale About Arb. AxisStep 1: Translate axis to origin
![Page 15: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/15.jpg)
43
Scale About Arb. AxisStep 1: Translate axis to origin
Step 2: Rotate axis to align with one of the coordinate axes
44
Scale About Arb. AxisStep 1: Translate axis to origin
Step 2: Rotate axis to align with one of the coordinate axes
Step 3: Scale as desired
45
Scale About Arb. AxisStep 1: Translate axis to origin
Step 2: Rotate axis to align with one of the coordinate axes
Step 3: Scale as desired
Steps 4&5: Undo 2 and 1 (reverse order)
![Page 16: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/16.jpg)
46
Order Matters!
The order that matrices appear in matters
Some special cases work, but they are special
But matrices are associative
Think about efficiency when you have many points to transform...
A ·B �= BA
(A ·B) ·C= A · (B ·C)
47
Matrix InversesIn general: undoes effect of
Special cases:• Translation: negate and • Rotation: transpose• Scale: invert diagonal (axis-aligned scales)
Others:• Invert matrix• Invert SVD matrices
A−1 A
tx ty
48
Point Vectors / Direction
Points in space have a 1 for the “w” coordinate
What should we have for ?• • Directions not the same as positions• Difference of positions is a direction• Position + direction is a position• Direction + direction is a direction
• Position + position is nonsense
a−bw= 0
![Page 17: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/17.jpg)
49
Some Things Require CareFor example normals transform abnormally
nTt = 0 NfindtM = Mt such that nTNtM = 0
50
Some Things Require CareFor example normals transform abnormally
nTt = 0
nTt = nTIt = nTM−1Mt = 0
NfindtM = Mt such that nTNtM = 0
51
Some Things Require CareFor example normals transform abnormally
nTt = 0
nTt = nTIt = nTM−1Mt = 0
(nTM−1)tM = 0
nTN = nTM−1
NfindtM = Mt such that nTNtM = 0
![Page 18: CS-184: Computer Graphicsvis.berkeley.edu/.../slides/04-2DTransformations.pdf · CS-184: Computer Graphics Lecture 4: 2D Transformations Maneesh Agrawala University of California,](https://reader034.vdocuments.net/reader034/viewer/2022052102/603c40dac53f675b09771bba/html5/thumbnails/18.jpg)
52
Some Things Require CareFor example normals transform abnormally
nTt = 0
nTt = nTIt = nTM−1Mt = 0
(nTM−1)tM = 0
nTN = nTM−1
nN = (nTM−1)T
N = (M−1)T
NfindtM = Mt such that nTNtM = 0
See book for details
53
Suggested Reading
Fundamentals of Computer Graphics by Pete Shirley• Chapter 6• And re-read chapter 5 if your linear algebra is rusty!