Geometric Transformations CENG 477 Introduction to Computer Graphics Fall 2015-2016 Computer...

Preview:

Citation preview

Geometric Transformations

CENG 477 Introduction to Computer GraphicsFall 2015-2016

Computer EngineeringMETU

2D Geometric Transformations

Basic Geometric Transformations

● Geometric transformations are used to transform the objects and the camera in a scene (for animation or modelling) and are also used to transform World Coordinates to View Coordinates

● Given the shape, transform all the points of the shape? Transform the points and/or vectors describing it.

● For example:Polygon: corner pointsCircle, Ellipse: center point(s), point at angle 0

● Some transformations preserves some of the attributes like sizes, angles, ratios of the shape.

Translation

● Simply move the object to a relative position.

TPP

PTP

+=

y'

x'=

t

t=

y

x=

t+y=y't+x=x'

y

x

yx

'

'

T

P

P'

Rotation● A rotation is defined by a rotation axis and a

rotation angle. ● For 2D rotation, the parameters are rotation

angle (θ) and the rotation point (xr,yr).

● We reposition the object in a circular path arround the rotation point (pivot point)

θ

xr

yr

Rotation

● When (xr,yr)=(0,0) we have

r

P

P'

cossinsincos)sin(

sinsincoscos)cos(

rrry

rrrx

sin

cos

ry

rx

The original coordinates are:

cossin

sincos

yxy

yxx

Substituting them in the

first equation we get:

In the matrix form we have:

where

PRP

cossin

sincosR

Rotation

● Rotation around an arbitrary point (xr,yr)

● This equations can be written as matrix operations (we will see when we discuss homogeneous coordinates).

r

P

P'

cos)(sin)(

sin)(cos)(

rrr

rrr

yyxxyy

yyxxxx

(xr,yr)

Scaling

● Change the size of an object. Input: scaling factors (sx,sy)

PSP

S

'

=

s

s=

ys=y'xs=x'

y

x

yx

0

0

PP'

non-uniform vs.uniform scaling

Homogenous Coordinates● All transformations can be represented by matrix

operations.

● Translation is additive, rotation and scaling is multiplicative (+ additive if you rotate around an arbitrary point or scale around a fixed point); making the operations complicated.

● Adding another dimension to transformations make translation also representable by multiplication. Cartesian coordinates vs homogenous coordinates.

h

yh

xh

=

h

y

x

=Ph

y=y

h

x=x h

h

hh

● Many points in homogenous coordinates can represent the same point in Cartesian coordinates.

● In homogenous coordinates, all transformations can be written as matrix multiplications.

Transformations in Homogenous C.

● Translation

● Rotation

● Scaling

Pt,tT=P

t

t

=t,tT

yx'

y

x

yx

100

10

01

PθR=P

θθ

θθ

=θR

'

100

0cossin

0sincos

Ps,sS=P

s

s

=s,sS

yx

y

x

yx

100

00

00

Composite Transformations

● Application of a sequence of transformations to a point:

PM

PMMP 12

Composite Transformations

● First: composition of similar type transformations

● If we apply to successive translations to a point:

yyxxyy

xx

y

x

y

x

yxyx t+t,t+tT=tt

tt

=t

t

t

t

=t,tTt,tT 212121

21

1

1

2

2

1122

100

10

01

100

10

01

100

10

01

PTT

PTTP

)},(),({

}),({),(

1122

1122

yxyx

yxyx

tttt

tttt

yyxxyy

xx

y

x

y

x

yxyx ss,ss=ss

ss

=s

s

s

s

=s,ss,s 212121

21

1

1

2

2

1122

100

00

00

100

00

00

100

00

00

SSS

Composite Transformations

φ+θ=φ+θφ+θ

φ+θφ+θ

=φθ+φθφθ+φθ

φθφθφθφθ

=θθ

θθ

=φθ

R

RR

100

0)cos()sin(

0)sin()cos(

100

0coscossinsinsincoscossin

0cossinsincossinsincoscos

100

0cossin

0sincos

100

0cossin

0sincos

Rotation around a pivot point– Translate the object so that the

pivot point moves to the origin

– Rotate around origin

– Translate the object so that the pivot point is back to its original position

100

sincos1cossin

sincos1sincos

100

10

01

100

0cossin

0sincos

100

10

01

θxθyθθ

θy+θxθθ

=y

x

θθ

θθ

y

x

=y,xθy,x

rr

rr

r

r

r

r

rrrr TRT

rr y,x T

R

rr y,xT

Scaling with respect to a fixed point

– Translate to origin

– Scale

– Translate back

100

10

10

100

10

01

100

00

00

100

10

01

yfy

xfx

f

f

y

x

f

f

ffyxff

sys

sxs

=y

x

s

s

y

x

=y,xs,sy,x TST

ff y,x T

yx s,sS

ff y,xT

Order of matrix compositions

● Matrix composition is not commutative. So, be careful when applying a sequence of transformations.

pivot same pivot

Other Transformations

● Reflection

100

010

001

100

010

001

100

010

001

● Shear: Deform the shape like shifted slices.

(1,1)

(3,1)

(2,1)

x ' x shx y y ' y

1 shx 0

0 1 00 0 1

(0,1)

Transformations Between the Coordinate Systems

● Between different systems: Polar coordinates to cartesian coordinates

● Between two cartesian coordinate systems. For example, relative coordinates or window to viewport transformation.

● How to transform from x,yto x',y' ?

● Superimpose x',y' to x,y

● Transformation:

– Translate so that (x0,y0)

moves to (0,0) of x,y

– Rotate x' axis onto x axis

xx

y

y'

x'

x0

y0

00, yxTθR

xx

y

y'x'

● Alternate method for rotation:Specify a vector V for positivey' axis:

xx

y

y'

x'

V

yx v,v==

y'

V

Vv

:direction in ther unit vecto

yxxy u,u=v,v=

x'

u

v 90 clockwise rotate direction, in ther unit vecto

● Elements of any rotation matrix can be expressed as elements of a set of orthogonal unit vectors:

100

0

0

100

0

0

yx

xy

yx

yx

vv

vv

=vv

uu

=R

xx

yy'

x'

P

0P

0

0

PP

PPv

=

● Example:

xx'

yy'

P

0P

111

1.220.6

1.610.8

111

121

443

100

20.80.6

10.60.8

100

110

201

100

00.80.6

00.60.8

12,

0.60.8,

0.6,0.82.5

2

2.5

1.5

21.5

1.5,2

3.5,32,1

220

0

=T

=

=,=

=,=+

==

==

M

TvuRM

=u

PP

PPv

PP

0

TM T

Let triangle T be defined asthree column vectors:

Affine Transformations

● Coordinate transformations of the form:

● Translation, rotation, scaling, reflection, shear. Any affine transformation can be expressed as the combination of these.

● Rotation, translation, reflection: preserve angles, lengths, parallel lines

yyyyx

xxyxx

b+ya+xa=y'

b+ya+xa=x'

3 DIMENSIONALTRANSFORMATIONS

3D Transformations

● x,y,z coordinates. Usual notation:Right handed coordinate system

● Analogous to 2D we have 4 dimensions in homogenous coordinates.

● Basic transformations:

– Translation

– Rotation

– Scaling

x

y

z

z

x

y

y

z

x

Translation

● move the object to a relative position.

z

y

x

z

y

x

11000

100

010

001

1

z

y

x

t

t

t

z

y

x

z

y

x

PTP

P

P

Rotation

● Rotation arround the coordinate axes

x axis y axis z axis

z

x

y

z

x

y

z

x

y

z

x

y

z

x

y

z

x

y

Counterclockwise when looking along the positive half towards origin

Rotation around coordinate axes

● Arround x

● Arround y

● Arround z

1000

0cossin0

0sincos0

0001

)(

xR PRP )(x

1000

0100

00cossin

00sincos

)(

zR PRP )(z

1000

0cos0sin

0010

0sin0cos

)(

yR PRP )(y

Rotation Arround a Parallel Axis

● Rotating the object around a line parallel to one of the axes: Translate to axis, rotate, translate back.

z

y

x

z

y

x

z

y

x

z

y

x

Translate Rotate Translate back

PTRTP ),,0()(),,0( ppxpp zyzy

Figure from the textbook

Rotation Around an Arbitrary Axis

● Translate the object so that the rotation axis passes though the origin

● Rotate the object so that the rotation axis is aligned with one of the coordinate axes

● Make the specified rotation

● Reverse the axis rotation

● Translate back

z

y

x

Rotation Around an Arbitrary Axis

Rotation Around an Arbitrary Axis

),,( 12121212 zzyyxx PPV

),,( cbaV

Vuu is the unit vector along V:

First step: Translate P1 to origin:

1000

100

010

001

1

1

1

z

y

x

T

Next step: Align u with the z axiswe need two rotations: rotate around x axis to get u onto the xz plane, rotate around y axis to get u aligned with z axis.

Rotation Around an Arbitrary Axis

z

x

u

Align u with the z axis 1) rotate around x axis to get u into the xz plane, 2) rotate around y axis to get u aligned with the z axis

y

α

z

xu

y

βz

x

uu' αuz

y

Dot product and Cross Product

● v dot u = vx * ux + vy * uy + vz * uz. That equals also to |v|*|u|*cos(a) if a is the angle between v and u vectors. Dot product is zero if vectors are perpendicular.

v x u is a vector that is perpendicular to both vectors you multiply. Its length is |v|*|u|*sin(a), that is an area of parallelogram built on them. If v and u are parallel then the product is the null vector.

Rotation Around an Arbitrary Axis

z

x

uu' α

Align u with the z axis 1) rotate around x axis to get u into the xz plane, 2) rotate around y axis to get u aligned with the z axis

uz

We need cosine and sine of α for rotation

),,0( cbu

22 cos cbdd

c

z

z

uu

uu

bxzxz uuuuuu sin

sindb

d

b

d

c sin cos

1000

00

00

0001

)(

d

c

d

bd

b

d

c

x RProjection of u onyz plane

Rotation Around an Arbitrary Axis

z

x

u

u''= (a,0,d)

Align u with the z axis 1) rotate around x axis to get u into the xz plane, 2) rotate around y axis to get u aligned with the z axis

duu

uu

z

z

cos

)(sin ayzyz uuuuuu

1000

00

0010

00

)(

sin cos

da

ad

ad

y

R

),,()()()()()(),,()( 111111 zyxzyx xyzyx TRRRRRTR

β

Rotation, ... Alternative Method

Any rotation around origin can be represented by 3 orthogonal unit vectors:

1000

0

0

0

333231

232221

131211

rrr

rrr

rrr

R

Define a new coordinate system with the given rotation axis u using:

),,( zyx uuu

This matrix can be thought of asrotating the unit r1*, r2*, and r3* vectors

onto x, y, and z axes.

So, to align a given rotation axis u onto the z axis,we can define an (orthogonal) coordinate system and form this R matrix

zyx

x

xy

z

uuu

uu

uuu

uu

Rotation, ... Alternative Method

1000

0

00

0

)/,/,(),,()/,/,0(

)/,/,0(),,0()0,0,1(),,(

),,(

22

cbad

b

d

cd

ca

d

bad

dcadbadcbadbdc

dbdccb

bccba

cba

zyx

xx

xy

z

R

uuu

uuuu

uuu

uu

Check if this is equal to

)()( xy RR

Scaling

● Change the coordinates of the object by scaling factors.

x 'y 'z '1

sx 0 0 0

0 s y 0 0

0 0 sz 0

0 0 0 1

xyz1

P ' S P

z

y

x

z

y

x

PSP

P

P

Scaling with respect to a Fixed Point

● Translate to origin, scale, translate back

z

y

x

z

y x

z

y

x

z

y

x

Translate Scale Translate back

PTSTP ),,(),,( ffffff zyxzyx

Scaling with respect to a Fixed Point

1000

)1(00

)1(00

)1(00

),,(),,(

1000

00

00

00

1000

100

010

001

1000

100

010

001

1000

000

000

000

1000

100

010

001

),,(),,(

zfz

yfy

xfx

ffffff

fzz

fyy

fxx

f

f

f

f

f

f

z

y

x

f

f

f

ffffff

szs

sys

sxs

zyxzyx

zss

yss

xss

z

y

x

z

y

x

s

s

s

z

y

x

zyxzyx

TST

TST

Reflection

● Reflection over planes, lines or points

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

z

y

x

z

y

x

z

y

x

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

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

z

y

x

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

Shear

● Deform the shape depending on another dimension

SH z

1 0 a 00 1 b 00 0 1 00 0 0 1

x and y value depends on z value of the shape

SH x

1 0 0 0a 1 0 0b 0 1 00 0 0 1

y and z value depends on x value of the shape

Recommended