transformations computer graphics

61
Transformations 2D Transformations 3D Transformations OpenGL Transformation

Upload: vikram-halder

Post on 14-Apr-2017

126 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Transformations computer graphics

Transformations

2D Transformations3D TransformationsOpenGL Transformation

Page 2: Transformations computer graphics

Basic transformations The most basic ones

Translation Scaling Rotation Shear And others, e.g., perspective transform, projection, etc

Basic types of transformations Rigid-body: preserves length and angle Affine: preserves parallel lines, not angles or lengths Free-form: anything goes

Page 3: Transformations computer graphics

2D-Transformations

Basic Transformations Homogeneous coordinate system Composition of transformations

Page 4: Transformations computer graphics

Translation – 2D

(4,5) (7,5)

Y

XBefore Translation

1*

1001001

1yx

dd

yx

TPPdd

Tyx

Pyx

P

y

x

y

x

Form sHomogeniou

x’ = x + dx y’ = y + dy

(7,1) (10,1)

X

Y

Translation by (3,-4)

Page 5: Transformations computer graphics

Scaling – 2D

(4,5) (7,5)

Y

X(2,5/4) (7/2,5/4)

X

Y

Before Scaling Scaling by (1/2, 1/4)

y

x

y

x

y

x

sysx

yx

ss

PPS

ysyxsx

**

*0

0

*

**

Types of Scaling:

Differential ( sx != sy )Uniform ( sx = sy )

1*

1000000

1

Form sHomogeniou

yx

ss

yx

y

x

Page 6: Transformations computer graphics

Rotation – 2D

sincos

rr

v

rota

ted

cossinsincossinsincoscos

rryrrx

expand

cossinsincos

sincos

but yxyyxx

ryrx

original

sincos

rr

v

Page 7: Transformations computer graphics

Rotation – 2D

(5,2) (9,2)

Y

X

(2.1,4.9)

(4.9,7.8)

X

YBefore Rotation Rotation of 45 deg. w.r.t. origin

1*

1000cossin0sincos

1

Form sHomogeniou

yx

yx

cos*sin*sin*cos*

*cossinsincos

*

yxyx

yx

PPR

yyxxyx

cos*sin*sin*cos*

Page 8: Transformations computer graphics

Mirror Reflection

100010001

axis-Xabout Reflection

xM

yyxx

100010001

axis-Yabout Reflection

yM

yyxx

(1,1)

(1,-1)

Y

X

(-1,1) (1,1)

X

Y

Page 9: Transformations computer graphics

Shearing Transformation

1000101

10001001

10001001

ba

SHbSHa

SH xyyx

unit cube Sheared in Xdirection

Sheared in Ydirection

Sheared in both Xand Y direction

Page 10: Transformations computer graphics

Inverse 2D - Transformations

y-y

x-x

),(-(sx,sy)

(-θ-(θ

(-dx,-dy)-

(dx,dy)

MM

MM

SS

RR

TT

sysx

1

1

1

)1)

1

:RefMirror

: Sclaing

: Rotation

:nTranslaito

11

Page 11: Transformations computer graphics

Homogeneous Co-ordinates Translation, scaling and rotation are

expressed (non-homogeneously) as: translation: P = P + T Scale: P = S · P Rotate: P = R · P

Composition is difficult to express, since translation not expressed as a matrix multiplication

Homogeneous coordinates allow all three to be expressed homogeneously, using multiplication by 3 ´ 3 matrices

W is 1 for affine transformations in graphics

Page 12: Transformations computer graphics

Homogeneous Co-ordinates

P2d is a projection of Ph onto the w = 1 plane

So an infinite number of points correspond to : they constitute the whole line (tx, ty, tw)

xy

w Ph(x,y,w)

P2d(x,y,1)w=1

Page 13: Transformations computer graphics

Classification of Transformations

1. Rigid-body Transformation Preserves parallelism of lines Preserves angle and length e.g. any sequence of R() and T(dx,dy)

2. Affine Transformation Preserves parallelism of lines Doesn’t preserve angle and length e.g. any sequence of R(), S(sx,sy) and T(dx,dy)

unit cube 45 deg rotaton Scale in X not in Y

Page 14: Transformations computer graphics

Properties of rigid-body transformation

1002221

1211

y

x

trrtrr

The following Matrix is Orthogonal if the upper left 2X2 matrix has the following properties

1.A) Each row are unit vector. sqrt(r11* r11 + r12* r12) = 1

B) Each column are unit vector. sqrt(c11* c11 + c12* c12) = 1

2.A) Rows will be perpendicular to each other (r11 , r12 ) . ( r21 , r22) = 0

B) Columns will be perpendicular to each other (c11 , c12 ) . (c21 ,c22) = 0

e.g. Rotation matrix is orthogonal

1000cossin0sincos

• Orthogonal Transformation Rigid-Body Transformation

• For any orthogonal matrix B B-1 = BT

Page 15: Transformations computer graphics

Commutativity of Transformation Matrices

• In general matrix multiplication is not commutative• For the following special cases commutativity holds

i.e. M1.M2 = M2.M1

M1 M2

Translate TranslateScale Scale

Rotate RotateUniform Scale Rotate

• Some non-commutative Compositions: Non-uniform scale,

Rotate Translate, Scale Rotate, Translate

OriginalTransitional

Final

Page 16: Transformations computer graphics

Associativity of Matirx Multiplication

Create new affine transformations by multiplying sequences of the above basic transformations. q = CBAp

q = ( (CB) A) p = (C (B A))p = C (B (Ap) ) etc. matrix multiplication is associative.

But to transform many points, best to do M = CBA then do q = Mp for any point p to be rendered.

To transform just a point, better to do q = C(B(Ap))

For geometric pipeline transformation, define M and set it up with the model-view matrix and apply it to any vertex subsequently defined to its setting.

Page 17: Transformations computer graphics

Rotation of about P(h,k): R,P

R,P=

Q(x,y)

P(h,k)

Step 1: Translate P(h,k) to origin

T(-h ,-k)

Q1(x’,y’)

P1 (0,0)

Step 2: Rotate w.r.t to origin

R*

Q2(x’,y’)

P2 (0,0)

Step 3: Translate (0,0) to P(h,k0)

T(h ,k) *P3(h,k)

Q3(x’+h, y’ +k)

Page 18: Transformations computer graphics

Scaling w.r.t. P(h,k): Ssx,sy,p

T(-h ,-k)S(sx,sy)*T(h ,k) *Ssx,sy,P=

(4,3)

(1,1)

(4,1)

S3/2,1/2,(1,1)

Step 1: Translate P(h,k) to origin

(4,2)

(0,0) (4,0)

T(-1,-1)

Step 2: Scale S(sx,sy) w.r.t origin

(6,1)

(6,0)(0,0)

S(3/2,1/2)

(7,1)

Step 3: Translate (0,0) to P(h,k)(7,2)

(1,1)

T(1,1)

Page 19: Transformations computer graphics

Reflection about line L, ML

Step 1: Translate (0,b) to origin

T(0 ,-b)ML =

Step 2: Rotate - degrees

Step 3: Mirror reflect about X-axis

R(-) *T(0 ,b) *

Step 4: Rotate degrees

Step 5: Translate origin to (0,b)

M x*R() *

(0,b)

Y

Xt

O

Y

XO

Y

XO

Y

XO

Y

XO

(0,b)

Y

Xt

O

Page 20: Transformations computer graphics

Problems to be solved:Schaum’s outline series:Problems: 4.1 4.2 4.3, 4.4, 4.5 => R,P

4.6, 4.7, 4.8 => Ssx,sy,P

4.9, 4.10, 4.11, 4.21 => ML

4.12 => Shearing

Page 22: Transformations computer graphics

3D TransformationsBasics of 3D geometryBasic 3D TransformationsComposite Transformations

Page 23: Transformations computer graphics

OrientationThumb points to +ve Z-axisFingers show +ve rotation from

X to Y axisY

X

Z (out of page)

Y

X

Z (larger z areaway from viewer)

Right-handed orentation Left-handed orentation

Page 24: Transformations computer graphics

Affine Transformation Transformation – is a function that takes a point (or

vector) and maps that point (or vector) into another point (or vector).

A coordinate transformation of the form: x’ = axx x + axy y + axz z + bx ,

y’ = ayx x + ayy y + ayz z + by ,

z’ = azx x + azy y + azz z + bz ,

is called a 3D affine transformation.

11000

'''

zyx

baaabaaabaaa

wzyx

zzzzyzx

yyzyyyx

xxzxyxx

The 4th row for affine transformation is always [0 0 0 1].

Properties of affine transformation:– translation, scaling, shearing, rotation (or any

combination of them) are examples affine transformations.

– Lines and planes are preserved.– parallelism of lines and planes are also preserved, but not

angles and length.

Page 25: Transformations computer graphics

Translation – 3D

PPdddT

dzdydx

zyx

ddd

zyx

z

y

x

z

y

x

*),,(

11

*

1000100010001

z

y

x

dzz

dyydxx

Page 26: Transformations computer graphics

Scaling – 3D

1***

1

*

1000000000000

*),,(

z

y

x

z

y

x

zyx

szsysx

zyx

ss

s

PPsssS

Original

scale all axes

scale Y axiszsz

ysyxsx

z

y

x

*

**

Page 27: Transformations computer graphics

Rotation – 3D

1

cos*sin*sin*cos*

1

*

1000010000cossin00sincos

*,

zyxyx

zyx

PPR k

For 3D-Rotation 2 parameters are needed

Angle of rotation Axis of rotation

Rotation about z-axis:

Page 28: Transformations computer graphics

Rotation about Y-axis & X-axis

1cos*sin*

sin*cos*

1

*

10000cos0sin00100sin0cos

*,

zxy

zx

zyx

PPR j

1cos*sin*sin*cos*

1

*

10000cossin00sincos00001

*,

zyzy

x

zyx

PPR iAbout x-axis

About y-axis

Page 29: Transformations computer graphics

Shear along Z-axis

1

**

1

*

10000100010001

*),(

zshzyshzx

zyx

shsh

PPshshSH

y

x

y

x

yxxy

y

z

x

Page 30: Transformations computer graphics

Composite Transformations – 3D

Some of the composite transformations to be studied are:

AV,N = aligning a vector V with a vector N

R,L = rotation about an axis L( V, P )

Ssx,sy,P= scaling w.r.t. point P

Page 31: Transformations computer graphics

AV : aligning vector V with k

Av = R,i

V = aI + bJ + cK

x

y

z

b

a

c

k

22λ

λcos

λsin

by axis-about x Rotate :1 Step

cbc

b

b

|V|

x

y

z

b

a

k

( 0, b,c )b

|V|

x

y

z

a

k

|V|

( a, 0, )

( 0, 0, )

( 0, b,c )

Page 32: Transformations computer graphics

AV : aligning vector V with k

Av = R,i R-,j *

22λ

λcos

λsin

by axis-about x Rotate :1 Step

cbc

b

222

|V|

|V|λ)cos(

|V|)sin(

-by axis-yabout V Rotate :2 Step

cba

a

P( a, b, c)

b

x

y

z

b

a

c

k

|V|

( a, 0, )( 0, b,c )b

x

y

z

b

a

c

|V|

( 0, 0, |V|)

( 0, b,c )a

Page 33: Transformations computer graphics

AV : aligning vector V with k

AV-1 = AV

T

AV,N = AN-1 * AV

10000000

λλ

λ-

λ-λ

Vc

Vb

Va

bcVac

Vab

V

VA

Page 34: Transformations computer graphics

R,L : rotation about an axis L

Let the axis L be represented by vector V and passing through point P1.Translate P to the

origin2. Align V with vector k3. Rotate about k

4. Reverse step 25. Reverse step 1R,L

= T-PAV *R,k

*AV

-1 *T-P-1 *

V

P

Q

Q'

Lz

x

y

k

Page 35: Transformations computer graphics

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane

xy

z N

P

Page 36: Transformations computer graphics

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane1.Translate P to the

origin

MN,P =

T-P

xy

z

N

P

Page 37: Transformations computer graphics

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane1.Translate P to the

origin2. Align N with vector k

MN,P =

T-PAN *

N

Px

y

z

Page 38: Transformations computer graphics

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane1.Translate P to the

origin2. Align N with vector k3. Reflect w.r.t xy-plane

MN,P =

T-PAN *S1,1,-1 *

N

Px

y

z

Page 39: Transformations computer graphics

xy

z

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane1.Translate P to the

origin2. Align N with vector k3. Reflect w.r.t xy-plane4. Reverse step 2

MN,P =

T-PAN *S1,1,-1 *AN-1 *

Page 40: Transformations computer graphics

MN,P : Mirror reflection

Let the plane be represented by plane normal N and a point P in that plane1.Translate P to the

origin2. Align N with vector k3. Reflect w.r.t xy-plane4. Reverse step 2

5. Reverse step 1MN,P

= T-PAN *S1,1,-1 *AN

-1 *T-P-1 *

xy

z N

P

Page 41: Transformations computer graphics

Further Composition

The Composite Transform must have – Translation of P1 to Origin T

zx

y3P

1P2PT

– Some Combination of Rotations R

Rx

y

z 2P

3P 1P

zx

y3P

1P2P

Fig. 1 Fig. 2

Translate points in fig. 1 into points in fig 2 such that:– P1 is at Origin– P1P2 is along positive z-axis– P1P3 lies in positive y-axis half of yz plane

Page 42: Transformations computer graphics

Finding R

xx

zyx

zyx

zzz

yyy

xxx

Rx.x R

RRR

RRR

zRyRxRzRyRxRzRyRxR

rrrrrrrrr

R

R

vextor of component :Note

other each to larperpendicu are ii)

vectors unit are i)

Transform body-Rigid is R

be Let

,,

,,

...

...

...

333231

232221

131211

Page 43: Transformations computer graphics

Finding Rz

z

z

z

z

zyx

zyx

zyx

TT

RzRyRxR

zRzRzRyRyRyRxRxRxR

RRkR

21

21

21

21

21

21

PPPP

PPPP

PPPP

.

.

.

100

...

...

...

ˆ 1

R

zx

y3P

1P2P

x

y

z 2P

3P 1P

Rz

k

kPP

PPR

axis-z along PP aligns R

21

21

21

ˆ

Page 44: Transformations computer graphics

R

x

y

z 2P

3P 1P

zx

y3P

1P 2P

Finding Rx

x

2131

2131

x

x

x

2131

2131

zyx

zyx

zyx

T

2131

2131T

RPPPP

PPPP

zRyRxR

PPPP

PPPP

zRzRzRyRyRyRxRxRxR

RRPPPP

PPPPiR

´

´

´

´

´

´

.

.

.

001

...

...

...

ˆ 1 Rx

i

iR

R

ˆ´

´

´

2131

2131

2131

PPPPPPPP

axis-x along PPPP aligns

Rz

k

Page 45: Transformations computer graphics

Finding Ry

yxz

y

y

y

xz

zyx

zyx

zyx

Txz

T

RRRzRyRxR

RRzRzRzRyRyRyRxRxRxR

RRRRjR

´

´

´

.

.

.

010

...

...

...

ˆ 1

jR

Rˆ´

´

xz

xz

RR

axis- yalong RR aligns

R

x

y

z 2P

3P 1P

zx

y3P

1P 2P

Rx

i

Rz

k

Ry

j

Page 46: Transformations computer graphics

Problems to be solved:Schaum’s outline series:Problems: 6.1 6.2, 6.5, 6.9, 6.10, 6.11, 6.12 Av

6.3, 6.4 R,L

6.6, 6.7, 6.8 MN,P

Page 47: Transformations computer graphics

Transformations in OpenGL

OpenGL transformation commandsTransformation OrderHierarchical Modeling

Page 48: Transformations computer graphics

Transformations in OpenGL

OpenGL uses 3 stacks to maintain transformation matrices: Model & View transformation matrix stack Projection matrix stack Texture matrix stack

You can load, push and pop the stack The top most matrix from each stack is applied

to all graphics primitive until it is changed

M N

Model-ViewMatrix Stack

ProjectionMatrix Stack

GraphicsPrimitives(P)

OutputN•M•P

Page 49: Transformations computer graphics

General Transformation Commands

Specify current matrix (stack) : void glMatrixMode(GLenum mode)

▪ Mode : GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE

Initialize current matrix. void glLoadIdentity(void)

▪ Sets the current matrix to 4X4 identity matirx void glLoadMatrix{f|d}(cost TYPE *M)

▪ Sets the current matrix to 4X4 matrix specified by M

Note: current matrix Top most matrix of the current matrix stack

ABC

ABI

ABM

glLo

adM

atrix

(M)

glLo

adId

entit

y

Page 50: Transformations computer graphics

General Transformation Commands

Concatenate Current Matrix: void glMultMatrix(const TYPE *M)

▪ Multiplies current matrix C, by M. i.e. C = C*M

Caveat: OpenGL matrices are stored in column major order.

Best use utility function glTranslate, glRotate, glScale for common transformation tasks.

161284

151173

141062

13951

mmmmmmmmmmmmmmmm

Page 51: Transformations computer graphics

Transformations and OpenGL®

Each time an OpenGL transformation M is called the current MODELVIEW matrix C is altered: Cvv CMvv

glTranslatef(1.5, 0.0, 0.0);glRotatef(45.0, 0.0, 0.0, 1.0);

CTRvv

Note: v is any vertex placed in rendering pipeline v’ is the transformed vertex from v.

Page 52: Transformations computer graphics

Sample Instance Transformation

glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(...);glRotatef(...);glScalef(...);gluCylinder(...);

Page 53: Transformations computer graphics

Thinking About Transformations

As a Global System Objects moves but

coordinates stay the same

Think of transformation in reverse order as they appear in code

As a Local System Objects moves and

coordinates move with it

Think of transformation in same order as they appear in code

There is a World Coordinate System where: All objects are defined Transformations are in World Coordinate space

Two Different Views

Page 54: Transformations computer graphics

Local View Translate Object Then Rotate

Order of Transformation T•R

glLoadIdentity();glMultiMatrixf( T);glMultiMatrixf( R);draw_ the_ object( v);v’ = ITRv

Global View Rotate Object

Then Translate

Effect is same, but perception is different

Page 55: Transformations computer graphics

Order of Transformation R•T

glLoadIdentity();glMultiMatrixf( R);glMultiMatrixf( T);draw_ the_ object( v);v’ = ITRv

Local View Rotate Object Then Translate

Global View Translate Object

Then Rotate

Effect is same, but perception is different

Page 56: Transformations computer graphics

Hierarchical Modeling Many graphical objects are structured Exploit structure for

Efficient rendering Concise specification of model parameters Physical realism

Often we need several instances of an object Wheels of a car Arms or legs of a figure Chess pieces

Encapsulate basic object in a function Object instances are created in “standard”

form Apply transformations to different instances Typical order: scaling, rotation, translation

Page 57: Transformations computer graphics

OpenGL & Hierarchical Model

ABCC

glPushMat

rix

– void glPushMatrix(void);

AB

glPopMatrix

– void glPopMatrix(void);

ABC C

m

glGetFloatv

– void glGetFloatv(GL_MODELVIEW_MATRIX, *m);

ABC

Some of the OpenGL functions helpful for hierarchical modeling are:

Page 58: Transformations computer graphics

Scene Graph A scene graph is a hierarchical representation of

a scene We will use trees for representing hierarchical

objects such that: Nodes represent parts of an object Topology is maintained using parent-child relationship Edges represent transformations that applies to a part

and all the subparts connected to that parttypedef struct treenode {GLfloat m[16]; // Transformationvoid (*f) ( ); // Draw functionstruct treenode *sibling;struct treenode *child;

} treenode;

Scene

Sun Star X

Earth Venus Saturn

Moon Ring

Page 59: Transformations computer graphics

Example - Torso Initializing transformation matrix for node

treenode torso, head, ...;/* in init function */glLoadIdentity();glRotatef(...);glGetFloatv(GL_MODELVIEW_MATRIX, torso.m);

Initializing pointerstorso.f = drawTorso;torso.sibling = NULL;torso.child = &head;

Page 60: Transformations computer graphics

Generic Traversal

To render the hierarchy: Traverse the scene graph depth-first Going down an edge:

▪ push the top matrix onto the stack ▪ apply the edge's transformation(s)

At each node, render with the top matrix

Going up an edge: ▪ pop the top matrix off the stack

Page 61: Transformations computer graphics

Generic Traversal : Torso Recursive definition

void traverse (treenode *root) {if (root == NULL) return;glPushMatrix();glMultMatrixf(root->m);root->f();if (root->child != NULL)

traverse(root->child);glPopMatrix();if (root->sibling != NULL)

traverse(root->sibling);}

C is really not the right language for this !!