Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Graphics Graphics Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실."— Presentation transcript:

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:


Download ppt "Graphics Graphics Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실."

Similar presentations


Ads by Google