Download Presentation
Transformations

Loading in 2 Seconds...

1 / 67

Transformations - PowerPoint PPT Presentation

Transformations. 고려대학교 컴퓨터 그래픽스 연구실. 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

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Transformations' - taber

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Transformations

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

kucg.korea.ac.kr

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

kucg.korea.ac.kr

u

v

R

P

T

Q

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

4D column matrices

homogeneous

coordinate

transformation function

kucg.korea.ac.kr

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)

point

44 matrix

vector

kucg.korea.ac.kr

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

homogeneous

coordinate

affine transformation

kucg.korea.ac.kr

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

(a) object in

original position

(b) object translated

kucg.korea.ac.kr

Rotation (1/2)
• Simple example of 2D rotation

kucg.korea.ac.kr

Rotation (1/2)
• Simple example of 2D rotation

kucg.korea.ac.kr

Rotation (1/2)
• Simple example of 2D rotation

kucg.korea.ac.kr

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

kucg.korea.ac.kr

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

kucg.korea.ac.kr

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

kucg.korea.ac.kr

Scaling (2/2)
• Needs
• fixed point
• direction to scale
• scale factor
• longer (α>1) or smaller (0≤α<1)
• Reflection – negative scale factor

effect of scale factor

reflection

kucg.korea.ac.kr

Transformations in Homogeneous Coordinates
• Representations in homogeneous coordinates
• Affine transformation – 44 matrix

kucg.korea.ac.kr

Translation
• Point p to p’ by displacing by a distance d

?

translation matrix

kucg.korea.ac.kr

Translation
• Point p to p’ by displacing by a distance d

kucg.korea.ac.kr

Translation
• Point p to p’ by displacing by a distance d
• Inverse of a translation matrix

?

kucg.korea.ac.kr

Translation
• Point p to p’ by displacing by a distance d
• Inverse of a translation matrix

kucg.korea.ac.kr

Scaling
• Scaling matrix with a fixed point of the origin

?

scaling matrix

kucg.korea.ac.kr

Scaling
• Scaling matrix with a fixed point of the origin

kucg.korea.ac.kr

Scaling
• Scaling matrix with a fixed point of the origin
• Inverse of a scaling matrix

?

kucg.korea.ac.kr

Scaling
• Scaling matrix with a fixed point of the origin
• Inverse of a scaling matrix

kucg.korea.ac.kr

Rotation (1/2)
• Rotation with a fixed point at the origin

?

rotation matrix

kucg.korea.ac.kr

Rotation (1/2)
• Rotation with a fixed point at the origin

?

kucg.korea.ac.kr

Rotation (1/2)
• Rotation with a fixed point at the origin

?

kucg.korea.ac.kr

Rotation (1/2)
• Rotation with a fixed point at the origin

kucg.korea.ac.kr

Rotation (2/2)
• Inverse of a rotation matrix

?

kucg.korea.ac.kr

Rotation (2/2)
• Inverse of a rotation matrix

: orthogonal matrix

kucg.korea.ac.kr

Shear (1/2)
• One more affine transformation

shear the object in the x direction

?

kucg.korea.ac.kr

Shear (1/2)
• One more affine transformation

shear the object in the x direction

kucg.korea.ac.kr

Shear (2/2)
• Shear in the x direction

?

shearing matrix

kucg.korea.ac.kr

Shear (2/2)
• Shear in the x direction

kucg.korea.ac.kr

Shear (2/2)
• Shear in the x direction
• Inverse of a shearing matrix

?

kucg.korea.ac.kr

Shear (2/2)
• Shear in the x direction
• Inverse of a shearing matrix

kucg.korea.ac.kr

CBA

p

M

q

Concatenation of Transformations
• Concatenating
• affine transformations by multiplying together
• sequences of the basic transformations

 define an arbitrary transformation directly

• ex) three successive transformations

p

A

B

C

q

kucg.korea.ac.kr

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

kucg.korea.ac.kr

Rotation about a Fixed Point (2/3)

sequence of transformations

kucg.korea.ac.kr

General Rotation (1/2)
• Three successive rotations about the three axes

rotation of a cube about the z axis

rotation of a cube about the y axis

?

rotation of a cube about the x axis

kucg.korea.ac.kr

General Rotation (2/2)

kucg.korea.ac.kr

?

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

kucg.korea.ac.kr

Rotation about an Arbitrary Axis (1/6)
• Needs
• fixed point: p0
• rotation angle: θ
• rotation axis: vector p2-p1

rotation of a cube about an arbitrary axis

kucg.korea.ac.kr

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 axes

• carry 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

kucg.korea.ac.kr

Rotation about an Arbitrary Axis (3/6)
• Determine x and y
• direction angles and cosines

sequence of rotations

direction angles

kucg.korea.ac.kr

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

kucg.korea.ac.kr

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

computation of the y rotation

kucg.korea.ac.kr

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

kucg.korea.ac.kr

OpenGL Transformation Matrices (1/2)
• CTM (Current Transformation Matrix)
• matrix that is applied to any vertex
• part of the pipeline
• : replacement
• : initialization operation:
• : postmultiplication

vertices

vertices

CTM

kucg.korea.ac.kr

OpenGL Transformation Matrices (2/2)
• Matrix modes
• model-view and projection matrices
• Three functions: rotation, translation, scaling

vertices

vertices

model-view

projection

CTM

glRotatef(angle, vx, vy, vz);

glTranslatef(dx, dy, dz);

glScalef(sx, sy, sz);

kucg.korea.ac.kr

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)

kucg.korea.ac.kr

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);

kucg.korea.ac.kr

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;

}

kucg.korea.ac.kr

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();

}

kucg.korea.ac.kr

Rotating a Cube (2/2)

void spinCube(void)

{

theta[axis] += 2.0;

if( theta[axis] > 360.0 ) theta[axis] -= 360.0;

glutPostRedisplay();

}

• glPushMatrix( ), glPopMatrix( )
• perform a transformation and then return to the same state as before its execution
• ex) instance transformation

void mykey(char key, int mousex, int mousey)

{

if( key == ‘q’ || key == ‘Q’ ) exit();

}

glPushMatrix();

glTranslatef(.....);

glRotatef(.....);

glScalef(.....);

/* draw object here */

glPopMatrix();

kucg.korea.ac.kr

Virtual Trackball (1/3)
• Use the mouse position to control rotation about two axes
• Support continuous rotations of objects

trackball frame

kucg.korea.ac.kr

Virtual Trackball (2/3)
• Rotation with a virtual trackball
• projection of the trackball position to the plane

kucg.korea.ac.kr

Virtual Trackball (3/3)
• Rotation with a virtual trackball (cont’)
• determination of the orientation of a plane
• rotation angle

Quaternions

kucg.korea.ac.kr

imaginary

axis

z

y

real axis

x

Complex Numbers (1/3)
• Real part + imaginary part:
• Addition and subtraction
• Scalar multiplication
• Multiplication

kucg.korea.ac.kr

Complex Numbers (2/3)
• Imaginary unit:
• Complex conjugate
• modulus or absolute value
• Division

kucg.korea.ac.kr

Imaginary

axis

z=(x, y)

r

θ

real axis

Complex Numbers (3/3)
• Representation with polar coordinates
• Euler’s formula
• Complex multiplication and division
• nth roots

kucg.korea.ac.kr

Quaternions (1/2)
• One real part + three imaginary part
• Properties:
• Addition and scalar multiplication

kucg.korea.ac.kr

Quaternions (2/2)
• Ordered-pair notation
• scalar ‘s’ + vector “v= (a, b, c)”
• Addition:
• Multiplication
• Magnitude
• Inverse

kucg.korea.ac.kr

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θ

Rotating (α, β, γ)by angle2θabout the axis parallel to(ux, uy, uz)

kucg.korea.ac.kr

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

kucg.korea.ac.kr

Rotations with Quaternions (2/2)
• Obtain the rotation matrix by quaternion multiplication
• Include the translations

kucg.korea.ac.kr

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

kucg.korea.ac.kr