Download presentation
Presentation is loading. Please wait.
Published byDenis Gervais Byrd Modified over 9 years ago
1
Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실
2
KUCG Graphics Lab @ Korea University 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
3
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Transformations Take a point (or vector) and map that point (or vector) into another point (or vector) P Q uv T R homogeneouscoordinate 4D column matrices transformation function
4
KUCG Graphics Lab @ Korea University 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) 4 4 matrix vector point
5
KUCG Graphics Lab @ Korea University 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
6
KUCG Graphics Lab @ Korea University 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
7
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (1/2) Simple example of 2D rotation
8
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (1/2) Simple example of 2D rotation
9
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (1/2) Simple example of 2D rotation
10
KUCG Graphics Lab @ Korea University 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
11
KUCG Graphics Lab @ Korea University 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
12
KUCG Graphics Lab @ Korea University 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
13
KUCG Graphics Lab @ Korea University 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
14
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Transformations in Homogeneous Coordinates Representations in homogeneous coordinates Affine transformation – 4 4 matrix
15
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Translation Point p to p’ by displacing by a distance d translation matrix ?
16
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Translation Point p to p’ by displacing by a distance d
17
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Translation Point p to p’ by displacing by a distance d Inverse of a translation matrix ?
18
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Translation Point p to p’ by displacing by a distance d Inverse of a translation matrix
19
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Scaling Scaling matrix with a fixed point of the origin scaling matrix ?
20
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Scaling Scaling matrix with a fixed point of the origin
21
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Scaling Scaling matrix with a fixed point of the origin Inverse of a scaling matrix ?
22
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Scaling Scaling matrix with a fixed point of the origin Inverse of a scaling matrix
23
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (1/2) Rotation with a fixed point at the origin rotation matrix ?
24
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (1/2) Rotation with a fixed point at the origin ?
25
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (1/2) Rotation with a fixed point at the origin ?
26
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (1/2) Rotation with a fixed point at the origin
27
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (2/2) Inverse of a rotation matrix ?
28
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation (2/2) Inverse of a rotation matrix : orthogonal matrix
29
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Shear (1/2) One more affine transformation shear the object in the x direction ?
30
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Shear (1/2) One more affine transformation shear the object in the x direction
31
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Shear (2/2) Shear in the x direction shearing matrix ?
32
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Shear (2/2) Shear in the x direction
33
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Shear (2/2) Shear in the x direction Inverse of a shearing matrix ?
34
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Shear (2/2) Shear in the x direction Inverse of a shearing matrix
35
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Concatenation of Transformations Concatenating affine transformations by multiplying together sequences of the basic transformations define an arbitrary transformation directly ex) three successive transformations ABC pq M pq CBA
36
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation about a Fixed Point (1/3) Fixed point: p f apply R z ( ) to rotation about a fixed point rotation of a cube about its center
37
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation about a Fixed Point (2/3) sequence of transformations
38
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation about a Fixed Point (3/3)
39
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr 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 ?
40
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr General Rotation (2/2)
41
KUCG Graphics Lab @ Korea University 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 ?
42
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Instance Transformation (2/2)
43
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation about an Arbitrary Axis (1/6) Needs fixed point: p 0 rotation angle: θ rotation axis: vector p 2 -p 1 rotation of a cube about an arbitrary axis
44
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation about an Arbitrary Axis (2/6) First transformation is translation T(-p 0 ) and the final one is T(p 0 ) 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
45
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotation about an Arbitrary Axis (3/6) Determine x and y direction angles and cosines sequence of rotations direction angles
46
KUCG Graphics Lab @ Korea University 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
47
KUCG Graphics Lab @ Korea University 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
48
KUCG Graphics Lab @ Korea University 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
49
KUCG Graphics Lab @ Korea University 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 CTM vertices
50
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr 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-viewprojection vertices CTM
51
KUCG Graphics Lab @ Korea University 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)
52
KUCG Graphics Lab @ Korea University 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);
53
KUCG Graphics Lab @ Korea University 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; }
54
KUCG Graphics Lab @ Korea University 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(); }
55
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr 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();
56
KUCG Graphics Lab @ Korea University 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
57
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Virtual Trackball (2/3) Rotation with a virtual trackball projection of the trackball position to the plane
58
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Virtual Trackball (3/3) Rotation with a virtual trackball (cont’) determination of the orientation of a plane rotation angle Quaternions
59
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Complex Numbers (1/3) Real part + imaginary part: Addition and subtraction Scalar multiplication Multiplication y x z imaginary axis real axis
60
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Complex Numbers (2/3) Imaginary unit: Complex conjugate modulus or absolute value Division
61
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Complex Numbers (3/3) Representation with polar coordinates Euler’s formula Complex multiplication and division n th roots r θ z=(x, y) Imaginary axis real axis
62
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Quaternions (1/2) One real part + three imaginary part Properties: Addition and scalar multiplication
63
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Quaternions (2/2) Ordered-pair notation scalar ‘ s ’ + vector “ v = (a, b, c) ” Addition: Multiplication Magnitude Inverse
64
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Quaternions and 3D Rotation For a 3D point ( α, β, γ ) a unit quaternion its conjugate For R q is a 3D rotation about ( u x, u y, u z ) by 2θ Rotating (α, β, γ) by angle 2θ about the axis parallel to (u x, u y, u z )
65
KUCG Graphics Lab @ Korea University 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
66
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Rotations with Quaternions (2/2) Obtain the rotation matrix by quaternion multiplication Include the translations
67
KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Example Rotation about z axis Set the unit quaternion: Substitute a=b=0, c=sin(θ/2) into the matrix:
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.