CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien...

26
CS-184: Computer Graphics Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley V2016-S-04-1.0 1 2 Today 2D Transformations “Primitive” Operations Scale, Rotate, Shear, Flip, Translate Homogenous Coordinates SVD Start thinking about rotations... 2 04-2DTransformations.key - September 21, 2016

Transcript of CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien...

Page 1: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

CS-184: Computer GraphicsLecture #4: 2D Transformations

Prof. James O’BrienUniversity of California, Berkeley

V2016-S-04-1.0

1

2

Today

• 2D Transformations• “Primitive” Operations

• Scale, Rotate, Shear, Flip, Translate• Homogenous Coordinates• SVD• Start thinking about rotations...

2

04-2DTransformations.key - September 21, 2016

Page 2: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

3

Introduction

• Transformation: An operation that changes one configuration into another

• For images, shapes, etc.A geometric transformation maps positions that define the object to other positionsLinear transformation means the transformation is defined by a linear function... which is what matrices are good for.

3

4

Some Examples

Original

4

04-2DTransformations.key - September 21, 2016

Page 3: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

5

Some Examples

Images from Conan The Destroyer, 1984

Original

Uniform Scale

Rotation

Nonuniform ScaleShear

5

6

Mapping Functionf(p) = p0

p = (x,y)p

0 = (x0,y0)Maps points in original image to point in transformed image

Original Transformed

f

f�1

6

04-2DTransformations.key - September 21, 2016

Page 4: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

7

Mapping Functionf(p) = p0

p = (x,y)p

0 = (x0,y0)Maps points in original image to point in transformed image

Original Transformed

f�1

= c(f�1(p0)) = c(p)c(p) = [195,120,58] c0(p0)

7

8

Linear -vs- Nonlinear

Linear (shear)Nonlinear (swirl)

8

04-2DTransformations.key - September 21, 2016

Page 5: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

9

Geometric -vs- Color Space

Linear Geometric(flip)

Color Space Transform(edge finding)

9

10

Instancing

RHW

M.C. Escher, from Ghostscript 8.0 Distribution

10

04-2DTransformations.key - September 21, 2016

Page 6: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

11

Instancing

Carlo Sequin

11

12

Instancing

RHW

• Reuse geometric descriptions• Saves memory

12

04-2DTransformations.key - September 21, 2016

Page 7: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

13

Linear is Linear• Polygons defined by points• Edges defined by interpolation between two points• Interior defined by interpolation between all points• Linear interpolation

13

14

Linear is Linear• Composing two linear function is still linear• Transform polygon by transforming vertices

Scale

14

04-2DTransformations.key - September 21, 2016

Page 8: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

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) = a0 +b0x

15

16

Points in Space• Represent point in space by vector in

• Relative to some origin!• Relative to some coordinate axes!• The choice of coordinate system is arbitrary and should be convenient.

• Later we’ll add something extra...

Rn

Origin, 0

2

4

T]4,2[=pp= [4,2]T

16

04-2DTransformations.key - September 21, 2016

Page 9: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

17

Basic Transformations• Basic transforms are: rotate, scale, and translate• Shear is a composite transformation!

Rotate

Translate

Scale

Shear -- not really “basic”

Unifor

m/isotr

opic

Non-u

nifor

m/aniso

tropic

17

18

Linear Functions in 2D

x0 = f (x,y) = c1+ c2x+ c3yy0 = f (x,y) = d1+d2x+d3y

x0

y0

�=

txty

�+

Mxx MxyMyx Myy

�·xy

x0 = t+M ·x

18

04-2DTransformations.key - September 21, 2016

Page 10: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

19

Rotations

Rotate

pp !"

#$%

& −=

)Cos()()()Cos(

'θθ

θθ

SinSin

x

.707 -.707

.707 .707

y

x

45 degree rotation

19

20

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π

20

04-2DTransformations.key - September 21, 2016

Page 11: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

21

Rotations

• Preserve lengths and distance to origin• Rotation matrices are orthonormal• • In 2D rotations commute...

• But in 3D they won’t!

Det(R) = 1 6=�1

21

22

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'

22

04-2DTransformations.key - September 21, 2016

Page 12: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

23

Scales• Diagonal 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...

23

24

Shears

Shear

pp !"

#$%

&=

11

'xy

yx

HH

x

1 1

0 1

y

x

y

24

04-2DTransformations.key - September 21, 2016

Page 13: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

25

Shears

• Shears are not really primitive transforms• Related to non-axis-aligned scales• More shortly.....

25

26

Translation• This is the not-so-useful way:

Translate

!"

#$%

&+=

y

x

tt

pp'

Note that its not like the others.

26

04-2DTransformations.key - September 21, 2016

Page 14: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

27

Arbitrary Matrices• For everything but translations we have:

• Soon, translations will be assimilated as well

• What does an arbitrary matrix mean?

x0 = A ·x

27

28

Singular Value Decomposition• For any matrix, A , we can write SVD:

where Q and R are orthonormal and S is diagonal

• Can also write Polar Decomposition

where is also orthonormal

TQSRA =

A = PRSRT

P = QRTP

28

04-2DTransformations.key - September 21, 2016

Page 15: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

29

Decomposing Matrices• We can force P 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

29

30

Composition• Matrix multiplication composites matrices

• Several translations composted to one• Translations still left out...

BApp ='“Apply A to p and then apply B to that result.”

CppBAApBp === )()('

uCpBtBAptApBp +=+=+= )('

30

04-2DTransformations.key - September 21, 2016

Page 16: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

31

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

31

32

• 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

32

04-2DTransformations.key - September 21, 2016

Page 17: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

33

Homogeneous Translation

!!!

"

#

$$$

%

&

!!!

"

#

$$$

%

&

=

11001001

'~ y

x

y

x

pp

tt

p

pAp ~~'~ =The tildes are for clarity to distinguish homogenized from non-homogenized

vectors.

33

34

Homogeneous Others

!!

"

#

$$

%

&=

10000

~ AA

Now everything looks the same...Hence the term “homogenized!”

34

04-2DTransformations.key - September 21, 2016

Page 18: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

35

Compositing Matrices

• Rotations and scales always about the origin• How to rotate/scale about another point?

-vs-

35

36

Rotate About Arb. Point• Step 1: Translate point to origin

Translate (-C)

36

04-2DTransformations.key - September 21, 2016

Page 19: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

37

Rotate About Arb. Point• Step 1: Translate point to origin• Step 2: Rotate as desired

Translate (-C)

Rotate (θ)

37

38Don’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 ~~)('~ =−=

38

04-2DTransformations.key - September 21, 2016

Page 20: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

39

Scale About Arb. Axis• Diagonal matrices scale about coordinate axes only:

Not axis-aligned

39

40

Scale About Arb. Axis• Step 1: Translate axis to origin

40

04-2DTransformations.key - September 21, 2016

Page 21: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

41

Scale About Arb. Axis• Step 1: Translate axis to origin• Step 2: Rotate axis to align with one of the coordinate

axes

41

42

Scale About Arb. Axis• Step 1: Translate axis to origin• Step 2: Rotate axis to align with one of the coordinate

axes• Step 3: Scale as desired

42

04-2DTransformations.key - September 21, 2016

Page 22: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

43

Scale About Arb. Axis• Step 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)

43

44

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 6= BA

(A ·B) ·C= A · (B ·C)

44

04-2DTransformations.key - September 21, 2016

Page 23: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

45

Matrix Inverses• In 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

45

46

Point Vectors / Direction Vectors• 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

46

04-2DTransformations.key - September 21, 2016

Page 24: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

47

Somethings Require Care

For example normals do not transform normally

M(a⇥b) 6= (Ma)⇥ (Mb)

47

48

Some Things Require CareFor example normals transform abnormally

nTt = 0 NfindtM = Mt such that nTNtM = 0

48

04-2DTransformations.key - September 21, 2016

Page 25: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

49

Some Things Require CareFor example normals transform abnormally

nTt = 0

nTt = nTIt = nTM�1Mt = 0

NfindtM = Mt such that nTNtM = 0

49

50

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

50

04-2DTransformations.key - September 21, 2016

Page 26: CS-184: Computer Graphicsjob/Classes/CS... · Lecture #4: 2D Transformations Prof. James O’Brien University of California, Berkeley ... 22 04-2DTransformations.key - September 21,

51

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

51

04-2DTransformations.key - September 21, 2016