Examples: Affine and Projective Transformation Matrices

21
Examples: Affine and Projective Transformation Matrices Ron Goldman Department of Computer Science Rice University

Transcript of Examples: Affine and Projective Transformation Matrices

Page 1: Examples: Affine and Projective Transformation Matrices

Examples:Affine and Projective Transformation Matrices

Ron GoldmanDepartment of Computer ScienceRice University

Page 2: Examples: Affine and Projective Transformation Matrices

Affine Transformation Matrices

Typical Affine Transformation (Vectors)

vnew = c1vold + c2 (vold •w1)w2 +c3(w3 × vold )

3× 3 Matrix Formulation

M(w1,w2 ,w3) = c1I + c2 (w1⊗w2 )+c3(w3 × _)

vnew = vold ∗M (w1,w2,w3)

Typical Affine Transformation (Points)Q = fixed point

P = Q + (P −Q)

Pnew = Q+ (Pold −Q)∗M (w1,w2,w3)

4 × 4 Matrix Formulation

M(w1,w2 ,w3,Q) =M (w1,w2,w3) 0

Q−Q∗M (w1,w2,w3) 1

Page 3: Examples: Affine and Projective Transformation Matrices

Rotation Matrices

Rotation (Vectors)

vnew = cos(ϑ)vold + 1− cos(ϑ )( )(vold •w)w + sin(ϑ )(w× vold ) ↓ ↓ ↓R(w,ϑ ) = cos(ϑ )I + 1− cos(ϑ )( )w⊗w + sin(ϑ )(w × _)

4 × 4 Rotation Matrix

R(w,ϑ ,Q) =R(w,ϑ ) 0

Q −Q∗R(w,ϑ ) 1

Page 4: Examples: Affine and Projective Transformation Matrices

Rotation Around the z–Axis

L = z–Axis•

w = k = 0 0 1( )•

Q = Origin = 0 0 0( )

Matrices

I =

1 0 00 1 00 0 1

k ⊗ k =

0 0 00 0 00 0 1

k× =

0 1 0−1 0 00 0 0

Page 5: Examples: Affine and Projective Transformation Matrices

Rotation Around the z–Axis (continued)

3× 3 Rotation Matrix

R(k,θ) = cos(θ)I + 1− cos(θ)( )k ⊗ k + sin(θ)k ×

R(k,θ) = cos(θ)1 0 00 1 00 0 1

+ 1− cos(θ)( )

0 0 00 0 00 0 1

+ sin(θ)

0 1 0−1 0 00 0 0

R(k,θ) =

cos(θ) 0 00 cos(θ) 00 0 cos(θ)

+

0 0 00 0 00 0 1− cos(θ)

+

0 sin(θ) 0− sin(θ) 0 0

0 0 0

R(k,θ) =

cos(θ) sin(θ) 0− sin(θ) cos(θ) 0

0 0 1

Page 6: Examples: Affine and Projective Transformation Matrices

Rotation Around the z–Axis (continued)

4 × 4 Rotation Matrix

R(k,θ,Origin) =R(k,θ) 0

Origin−Origin∗R(k,θ) 1

R(k,θ,Q) =

cos(θ) sin(θ) 0 0−sin(θ) cos(θ) 0 0

0 0 1 00 0 0 1

Page 7: Examples: Affine and Projective Transformation Matrices

Rotation Around the x,y–Axes (Exercise)

Rotation Around x–Axis

R(i,θ ,Origin) =

1 0 0 00 cos(θ) sin(θ) 00 − sin(θ) cos(θ) 00 0 0 1

Rotation Around y–Axis

R( j,θ,Origin) =

cos(θ) 0 sin(θ) 00 1 0 0

−sin(θ) 0 cos(θ) 00 0 0 1

Page 8: Examples: Affine and Projective Transformation Matrices

Mirror Through the xy–Plane

S = xy–Plane•

n = k = 0 0 1( )•

Q = Origin = 0 0 0( )

Matrices

I =

1 0 00 1 00 0 1

k ⊗ k =

0 0 00 0 00 0 1

Page 9: Examples: Affine and Projective Transformation Matrices

Mirror Through the xy–Plane (continued)

4 × 4 Mirror Image Matrix

M(k,Origin) =I − 2k ⊗ k 0

2(Origin• k)k 1

I − 2k ⊗ k =

1 0 00 1 00 0 1

0 0 00 0 00 0 2

=

1 0 00 1 00 0 −1

M(k,Origin) =

1 0 0 00 1 0 00 0 −1 00 0 0 1

Page 10: Examples: Affine and Projective Transformation Matrices

Mirror Through the xz,yz–Planes (Exercise)

Mirror in yz–Plane

R(i,Origin) =

−1 0 0 00 1 0 00 0 1 00 0 0 1

Mirror in xz–Plane

R( j,Origin) =

1 0 0 00 −1 0 00 0 1 00 0 0 1

Page 11: Examples: Affine and Projective Transformation Matrices

Uniform Scaling About the Origin

4 × 4 Scaling Matrix

S(c,Origin) =cI 0

(1− c)Origin 1

=

c 0 0 00 c 0 00 0 c 00 0 0 1

Page 12: Examples: Affine and Projective Transformation Matrices

Non–Uniform Scaling Along Coordinate Axes

Scaling Along x–Axis

S(Origin,c,i ) =I − (1− c)(i⊗ i) 0

(1− c)(Origin•i)i 1

=

c 0 0 00 1 0 00 0 1 00 0 0 1

Scaling Along y–Axis

S(Origin,c, j) =I − (1− c)( j⊗ j) 0

(1− c)(Origin• j) j 1

=

1 0 0 00 c 0 00 0 1 00 0 0 1

Scaling Along z–Axis

S(Origin,c,k) =I − (1− c)(k ⊗ k) 0

(1− c)(Origin• k)k 1

=

1 0 0 00 1 0 00 0 c 00 0 0 1

Page 13: Examples: Affine and Projective Transformation Matrices

Orthogonal Projection into Coordinate Planes

Projection into xy-Plane

OProj(k,Origin) =I − k ⊗ k 0

(Origin• k)k 1

=

1 0 0 00 1 0 00 0 0 00 0 0 1

Projection into yz-Plane

OProj(i,Origin) =I − i ⊗ i 0

(Origin•i)i 1

=

0 0 0 00 1 0 00 0 1 00 0 0 1

Projection into xz-Plane

OProj( j,Origin) =I − j ⊗ j 0

(Origin• j) j 1

=

1 0 0 00 0 0 00 0 1 00 0 0 1

Page 14: Examples: Affine and Projective Transformation Matrices

Parallel Projection into xy–Plane

xy–Plane•

n = k = 0 0 1( )•

Q = Origin = 0 0 0( )

Projection Direction•

w = w1 w2 w3( )

Computations•

w•n = w•k = w3

n⊗w = k ⊗w =

0 0 00 0 0

w1 w2 w3

Page 15: Examples: Affine and Projective Transformation Matrices

Parallel Projection into xy–Plane (continued)

4 × 4 Projection Matrix

Pproj(k,Origin,w) =I − (k ⊗w) / (k •w) 0

(Origin•k ) / (k •w)( )w 1

I − (k ⊗w) / (k •w) =

1 0 00 1 00 0 1

− (1/ w3)

0 0 00 0 0w1 w2 w3

=

1 0 00 1 0

w1 /w3 w2 / w3 0

Pproj(k,Origin,w) =

1 0 0 00 1 0 0

w1 /w3 w2 /w3 0 00 0 0 1

Page 16: Examples: Affine and Projective Transformation Matrices

Perspective Projection into xy–Plane from Below

xy–Plane•

n = k = 0 0 1( )•

Q = Origin = 0 0 0( )

Eye Point•

R = 0 0 −1( )

Computations•

Q•n = Origin• k = 0•

R•n = R•k = −1

n⊗ R = k ⊗R =

0 0 00 0 00 0 −1

Page 17: Examples: Affine and Projective Transformation Matrices

Perspective Projection into xy–Plane from Below (continued)

4 × 4 Perspective Matrix

Persp(k,Origin,R) =(R−Origin)•k( )I − (k ⊗R) −t k

Origin•k( )R R•k

(R −Origin)• k( )I − (k ⊗ R) = −

1 0 00 1 00 0 1

0 0 00 0 00 0 −1

=

−1 0 00 −1 00 0 0

Persp(k,Origin,R) =

−1 0 0 00 −1 0 00 0 0 −10 0 0 −1

Page 18: Examples: Affine and Projective Transformation Matrices

Perspective Projection into xy–Plane from Below (continued)

4 × 4 Perspective Matrix

Persp(k,Origin,R) =

−1 0 0 00 −1 0 00 0 0 −10 0 0 −1

Coordinate Computation

(x,y,z,1)∗

−1 0 0 00 −1 0 00 0 0 −10 0 0 −1

= (−x,−y,0,−z −1)

xnew =x

z +1 ynew =

yz+1

znew = 0

Page 19: Examples: Affine and Projective Transformation Matrices

Affine Transformations

(xnew ,ynew ,znew ,1) = (xold ,yold ,zold ,1)∗

a e i 0b f j 0c g k 0d h l 1

xnew = axold + byold + czold + d

ynew = exold + fyold + gzold + h

znew = ixold + jyold + kzold + l

Page 20: Examples: Affine and Projective Transformation Matrices

Projective Transformations

(xnew ,ynew ,znew ,1) = (xold ,yold ,zold ,1)∗

a e i mb f j nc g k pd h l q

xnew =axold +byold +czold + dmxold +nyold + pzold +q

ynew =exold + fyold + gzold + hmxold + nyold + pzold + q

znew = ixold + jyold + kzold + lmxold +nyold + pzold +q

Page 21: Examples: Affine and Projective Transformation Matrices

Summary

Linear Transformations --

3× 3 Matrices

xnew = axold + byold + czoldynew = exold + fyold + gzoldznew = ixold + jyold + kzold

Affine Transformations --

4 × 4 Matrices

xnew = axold + byold + czold + dynew = exold + fyold + gzold + hznew = ixold + jyold + kzold + l

→ 4 th Row = Translation

Projective Transformations --

4 × 4 Matrices

xnew =axold +byold +czold + dmxold +nyold + pzold +q

ynew =exold + fyold + gzold + hmxold + nyold + pzold + q

znew = ixold + jyold + kzold + lmxold +nyold + pzold +q€

→ 4 th Column = Projection