graphics graphics lab @ korea university kucg.korea.ac.kr transformations 고려대학교 컴퓨터...

67
Graphics kucg.korea.ac.kr Graphics Lab @ Korea University Transformations 고고고고고 고고고 고고고고 고고고

Upload: moses-davis

Post on 17-Jan-2016

252 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

Graphics

kucg.korea.ac.kr Graphics Lab @ Korea University

Transformations

고려대학교 컴퓨터 그래픽스 연구실

Page 2: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Contents

Affine transformations rotation, translation, and scaling

Transformations in homogeneous coordinates Concatenation of transformations

rotation about a fixed point general rotation instance transformation rotation about an arbitrary axis

OpenGL transformation matrices Smooth rotation with a virtual trackball

Page 3: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Transformations

Take a point (or vector) and map that point (or vector) into another point (or vector)

P

Q

u v

T

R PTQ

uRv

pq f

uv f

homogeneoushomogeneouscoordinatecoordinate

4D column matrices

transformation function

Page 4: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Affine Transformations (1/2)

Linearity – linear function

Linear transformation transform the representation of a point (or vector) into

another representation of a point (or vector)

qfpfqpf

Auv

100034333231

24232221

14131211

aaaa

aaaa

aaaa

A

03

2

1

u

13

2

1

p

44 matrix vector point

Page 5: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Affine Transformations (2/2)

Linear transformation (cont’) preserve lines – transform a line into another line

only transform the endpoints of a line segment

Most transformations in CG are affine rotation, translation, scaling, and shear

dPP 0

dpp 0

AdApAp 0

homogeneouscoordinate

affine transformation

Page 6: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Translation

Operation that displace points by a fixed distance in a given direction displacement vector d

dPP

(a) object in original position

(b) object translated

Page 7: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (1/2)

Simple example of 2D rotation

sin

cos

sin

cos

y

x

y

x

Page 8: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (1/2)

Simple example of 2D rotation

sin

cos

sin

cos

y

x

y

x

cossincossinsincos

sincossinsincoscos

yxy

yxx

Page 9: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (1/2)

Simple example of 2D rotation

sin

cos

sin

cos

y

x

y

x

cossincossinsincos

sincossinsincoscos

yxy

yxx

y

x

y

x

cossin

sincos

Page 10: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (2/2)

Needs fixed point – a point is unchanged by the rotation rotation angle – positive rotation (counterclockwise in

right hand system) rotation axis in 3D – values on axis are unchanged

by the rotation

(a) rotation about a fixed point (b) 3D rotation

Page 11: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rigid-Body Transformations

Rotation and translation No combination of rotations and translations can

alter the shape of object alter only the object’s location and orientation

affine transformations, but non-rigid body transformations

Page 12: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Scaling (1/2)

Make an object bigger or smaller uniform – scaling in all directions

Affine non-rigid body transformation affine transformation: translation, rotation, scaling,

shear

nonuniform

uniform

Page 13: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Scaling (2/2)

Needs fixed point direction to scale scale factor

longer (α>1) or smaller (0≤α<1)

Reflection – negative scale factoreffect of scale

factor

reflection

Page 14: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Transformations in Homogeneous Coordinates

Representations in homogeneous coordinates

Affine transformation – 44 matrix

vPQ

013

2

1

3

2

1

vpq

100034333231

24232221

14131211

aaaa

aaaa

aaaa

M

Page 15: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Translation

Point p to p’ by displacing by a distance ddpp

0

,

1

,

1z

y

x

z

y

x

z

y

x

dppz

y

x

zz

yy

xx

z

y

x

zz

yy

xx

pp T

translation matrix

?

Page 16: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Translation

Point p to p’ by displacing by a distance ddpp

0

,

1

,

1z

y

x

z

y

x

z

y

x

dppz

y

x

zz

yy

xx

z

y

x

zz

yy

xx

pp T

1000

100

010

001

z

y

x

T

Page 17: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Translation

Point p to p’ by displacing by a distance d

Inverse of a translation matrix

dpp

0

,

1

,

1z

y

x

z

y

x

z

y

x

dppz

y

x

zz

yy

xx

z

y

x

zz

yy

xx

pp T

1000

100

010

001

z

y

x

T

zyxzyx TT ,,,,1 ?

Page 18: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Translation

Point p to p’ by displacing by a distance d

Inverse of a translation matrix

dpp

0

,

1

,

1z

y

x

z

y

x

z

y

x

dppz

y

x

zz

yy

xx

z

y

x

zz

yy

xx

pp T

1000

100

010

001

z

y

x

T

1000

100

010

001

,,,,1

z

y

x

zyxzyx TT

Page 19: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Scaling

Scaling matrix with a fixed point of the origin

zz

yy

xx

z

y

x

pp S

zyxS ,, zyxS ,,

scaling matrix

?

Page 20: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Scaling

Scaling matrix with a fixed point of the origin

zz

yy

xx

z

y

x

pp S

1000

000

000

000

z

y

x

S

zyxS ,, zyxS ,,

Page 21: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Scaling

Scaling matrix with a fixed point of the origin

Inverse of a scaling matrix

zz

yy

xx

z

y

x

pp S

zyx

zyx SS

1,

1,

1,,1 ?

1000

000

000

000

z

y

x

S

zyxS ,, zyxS ,,

Page 22: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Scaling

Scaling matrix with a fixed point of the origin

Inverse of a scaling matrix

zz

yy

xx

z

y

x

pp S

1000

0100

0010

0001

1,

1,

1,,1

z

y

x

zyx

zyx SS

1000

000

000

000

z

y

x

S

zyxS ,, zyxS ,,

Page 23: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (1/2)

Rotation with a fixed point at the origin

zz

yxy

yxx

cossin

sincos pp zR zR zR

rotation matrix

?

Page 24: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (1/2)

Rotation with a fixed point at the origin

zz

yxy

yxx

cossin

sincos pp zR

1000

0100

00cossin

00sincos

zR

xx RR ?

zR zR

Page 25: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (1/2)

Rotation with a fixed point at the origin

zz

yxy

yxx

cossin

sincos pp zR

1000

0cossin0

0sincos0

0001

xx RR yy RR ?

1000

0100

00cossin

00sincos

zR

zR zR

Page 26: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (1/2)

Rotation with a fixed point at the origin

zz

yxy

yxx

cossin

sincos pp zR

1000

0cossin0

0sincos0

0001

xx RR

1000

0cos0sin

0010

0sin0cos

yy RR

1000

0100

00cossin

00sincos

zR

zR zR

Page 27: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (2/2)

Inverse of a rotation matrix

RR 1

sinsin,coscos

zz RR 1 ?

Page 28: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation (2/2)

Inverse of a rotation matrix

RR 1

sinsin,coscos

1000

0100

00cossin

00sincos

1000

0100

00cossin

00sincos

1

zz RR

TRR 1 : orthogonal matrix

Page 29: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Shear (1/2)

One more affine transformation

shear the object in the x direction

z

y

x

?

Page 30: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Shear (1/2)

One more affine transformation

shear the object in the x direction

zz

yy

yxx

cot

Page 31: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Shear (2/2)

Shear in the x directionpp xH

xH xH

zz

yy

yxx

cot

shearing matrix

?

Page 32: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Shear (2/2)

Shear in the x directionpp xH

1000

0100

0010

00cot1

xHzz

yy

yxx

cot

xH xH

Page 33: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Shear (2/2)

Shear in the x direction

Inverse of a shearing matrix

pp xH

1000

0100

0010

00cot1

xHzz

yy

yxx

cot

xx HH 1 ?

xH xH

Page 34: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Shear (2/2)

Shear in the x direction

Inverse of a shearing matrix

pp xH

1000

0100

0010

00cot1

xHzz

yy

yxx

cot

1000

0100

0010

00cot1

1

xx HH

xH xH

Page 35: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Concatenation of Transformations

Concatenating affine transformations by multiplying together sequences of the basic transformations

define an arbitrary transformation directly ex) three successive transformations

CBApApBCq

A B Cp q

CBAM

Mpq Mp q

CBA

Page 36: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about a Fixed Point (1/3)

Fixed point: pf

apply Rz() to rotation about a fixed point

rotation of a cube about its center

Page 37: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about a Fixed Point (2/3)

sequence of transformations

fzf pTRpT M

Page 38: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about a Fixed Point (3/3)

fzf pTRpT M

1000

100

010

001

1000

0100

00cossin

00sincos

1000

100

010

001

f

f

f

f

f

f

z

y

x

z

y

x

1000

0100

cossin0cossin

sincos0sincos

fff

fff

yxy

yxx

Page 39: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

General Rotation (1/2)

Three successive rotations about the three axes

rotation of a cube about the z axisrotation of a cube about the y axis

rotation of a cube about the x axis

?

Page 40: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

General Rotation (2/2)

zyx RRRR

1000

0100

00cossin

00sincos

1000

0cos0sin

0010

0sin0cos

1000

0cossin0

0sincos0

0001

Page 41: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Instance Transformation (1/2)

Instance of an object’s prototype occurrence of that object in

the scene

Instance transformation applying an affine

transformation to the prototype to obtain desired size, orientation, and location

instance transformation

?

Page 42: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Instance Transformation (2/2)

TRSM

1000

000

000

000

1000

0100

00cossin

00sincos

1000

100

010

001

z

y

x

z

y

x

Page 43: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about an Arbitrary Axis (1/6)

Needs fixed point: p0

rotation angle: θ rotation axis: vector p2-p1

12 ppu

z

y

x

u

uv

rotation of a cube about an arbitrary

axis

Page 44: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about an Arbitrary Axis (2/6)

First transformation is translation T(-p0) and the final one is T(p0)

Rotation problem!!! we can get an arbitrary rotation

from three rotations about

individual axescarry out two rotations to align

the axis of rotation with the z

axis rotate by θ about the the z axis

movement of the fixed point to the

origin

Page 45: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about an Arbitrary Axis (3/6)

Determine x and y direction angles and cosines

1222 zyx

zzyyxx cos ,cos ,cos

1coscoscos 222 zyx

sequence of rotations

direction angles

Page 46: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about an Arbitrary Axis (4/6)

Determine x and y (cont’) projection line segment into plane y=0

look at the projection of line segment (before rotation) on the plane x=0

computation of the x rotation

22zyd

1000

0//0

0//0

0001

dd

ddR

zy

yzxx

Page 47: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about an Arbitrary Axis (5/6)

Determine x and y (cont’) projection line segment into z axis

rotation about y axis caution!!! – clockwise angle

1000

00

0010

00

d

d

Rx

x

yy

computation of the y rotation

Page 48: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotation about an Arbitrary Axis (6/6)

Finally concatenate all the matrices

Ex) rotate an object by 45 degrees about the line passing through the origin and the point (1,2,3), fixed point is the origin solution – textbook p.195~196

00 ppM TRRRRRT xxyyzyyxx

00 pRpM TT

xxyyzyyxx RRRRR R

Page 49: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

OpenGL Transformation Matrices (1/2)

CTM (Current Transformation Matrix) matrix that is applied to any vertex part of the pipeline

: replacement : initialization operation: : postmultiplication

CTMvertices vertices

IC

SCTC

RCCSCCTC

CRC

Page 50: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

OpenGL Transformation Matrices (2/2)

Matrix modes model-view and projection matrices

Three functions: rotation, translation, scaling

glRotatef(angle, vx, vy, vz);glTranslatef(dx, dy, dz);glScalef(sx, sy, sz);

model-view projectionvertices vertices

CTM

Page 51: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Example: Rotation about a Fixed Point in OpenGL

Needs fixed point: (4, 5, 6) rotation angle: 45 degrees rotation axis: the line through the origin and the point

(1,2,3)

0.6 ,0.5 ,0.4

0.3 ,0.2 ,0.1 ,0.45

0.6 ,0.5 ,0.4

CTC

CRC

CTC

IC

Page 52: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Example: Rotation about a Fixed Point in OpenGL

Needs fixed point: (4, 5, 6) rotation angle: 45 degrees rotation axis: the line through the origin and the point

(1,2,3)

glMatrixMode(GL_MODELVIWE); glLoadIdentity( ); glTranslatef(4.0, 5.0, 6.0); glRotatef(45.0, 1.0, 2.0, 3.0); glTranslatef(-4.0, -5.0, -6.0);

Page 53: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotating a Cube (1/2)

glutDisplayFunc(display);glutIdleFunc(spinCube);glutMouseFunc(mouse);

void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotatef(theta[0], 1.0, 0.0, 0.0); glRotatef(theta[1], 0.0, 1.0, 0.0); glRotatef(theta[2], 0.0, 0.0, 1.0); colorcube(); glutSwapBuffers();}

void mouse(int btn, int state, int x, int y){ if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN) axis=0; if(btn==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN) axis=1; if(btn==GLUT_RIGHT_BUTTON && state==GLUT_DOWN) axis=2;}

Page 54: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotating a Cube (2/2)

void spinCube(void){ theta[axis] += 2.0; if( theta[axis] > 360.0 ) theta[axis] -= 360.0; glutPostRedisplay();}

void mykey(char key, int mousex, int mousey){ if( key == ‘q’ || key == ‘Q’ ) exit();}

Page 55: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotating a Cube (2/2)

glPushMatrix( ), glPopMatrix( ) perform a transformation and then return to the same

state as before its execution ex) instance transformation

void spinCube(void){ theta[axis] += 2.0; if( theta[axis] > 360.0 ) theta[axis] -= 360.0; glutPostRedisplay();}

void mykey(char key, int mousex, int mousey){ if( key == ‘q’ || key == ‘Q’ ) exit();}

glPushMatrix();glTranslatef(.....);glRotatef(.....);glScalef(.....);/* draw object here */glPopMatrix();

glPushMatrix();glTranslatef(.....);glRotatef(.....);glScalef(.....);/* draw object here */glPopMatrix();

Page 56: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Virtual Trackball (1/3)

Use the mouse position to control rotation about two axes

Support continuous rotations of objects

trackball frame

Page 57: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Virtual Trackball (2/3)

Rotation with a virtual trackball projection of the trackball position to the plane

222

2222

zxry

rzyx

Page 58: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Virtual Trackball (3/3)

Rotation with a virtual trackball (cont’) determination of the orientation of a plane

rotation angle

21 ppn

211cos pp

QuaternionsQuaternions n

Page 59: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Complex Numbers (1/3)

Real part + imaginary part:

Addition and subtraction

Scalar multiplication

Multiplication

iyxz

zyzx Im,Re

yxz ,

y

x

z

imaginaryaxis

real axis 21212211 , , , yyxxyxyx

1111 , , kykxyxk

122121212211 , , , yxyxyyxxyxyx

Page 60: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Complex Numbers (2/3)

Imaginary unit:

Complex conjugate

modulus or absolute value

Division

1 ,0i

0 ,11 ,01 ,02 i

1i

iyxz iyxz

22 yxzzz

22

22

211222

22

212122

22

2211

22

21

2

1 , , ,

yx

yxyx

yx

yyxx

yx

yxyx

zz

zz

z

z

Page 61: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Complex Numbers (3/3)

Representation with polar coordinates

Euler’s formula

Complex multiplication and division

nth roots

z=(x, y)

Imaginaryaxis

real axis

sincos irz

irez sincos iei

2121

2

1

2

12121 , ii e

r

r

z

zerrzz

1 , ,2 ,1 ,0,2

sin2

cos

nkn

ki

n

krz nn

Page 62: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Quaternions (1/2)

One real part + three imaginary part

Properties:

Addition and scalar multiplication

kcjbiasq 1222 kji

jikki

ikjjk

kjiij

dkcdjbdiadsdq 11111

2121212121 cckbbjaaissqq

Page 63: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Quaternions (2/2)

Ordered-pair notation

scalar ‘s’ + vector “v = (a, b, c)”

Addition: Multiplication

Magnitude

Inverse

v ,sq

212121 , vv ssqq

211221212121 , vvvvvv ssssqq

vv 22sq

v ,12

1 sq

q 0 ,111 qqqq

Page 64: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Quaternions and 3D Rotation

For a 3D point (α, β, γ) a unit quaternion its conjugate

For

Rq is a 3D rotation about (ux, uy, uz) by 2θ

cbasq , , , cbasq , , ,

, , ,0 , , ,0 qq

qpqpRq

zyx uuuq , ,sin ,cos

Rotating Rotating ((αα, , ββ, , γγ)) by angleby angle 22θθ about the axis about the axis parallel toparallel to (u(uxx, u, uyy, u, uzz))

Page 65: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotations with Quaternions (1/2)

Rotation about any axis set up a unit quaternion (u: unit vector)

represent any point position P in quaternion notation (p = (x, y, z))

carry out with the quaternion operation (q-1=(s, –v))

produce the new quaternion

cbas , ,2

sin ,2

cos

uv

pP ,0

1 qqPP

pP ,0

pvvpvvpvpp ss 22

Page 66: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Rotations with Quaternions (2/2)

Obtain the rotation matrix by quaternion multiplication

Include the translations

xxyyzyyxx

R

basabcsbac

sabccascab

sbacscabcb

RRRRR

M

22

22

22

2212222

2222122

2222221

TMTR R1

Page 67: Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

KUCG

Graphics Lab @ Korea University

Example

Rotation about z axis Set the unit quaternion: Substitute a=b=0, c=sin(θ/2) into the matrix:

2

sin1 ,0 ,0 ,2

cos

vs

100

0cossin

0sincos

100

02

sin212

sin2

cos2

02

sin2

cos22

sin21

2

2

RM

sin2

sin2

cos2

cos2

sin21 2