Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

2 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

3 transformation function
Transformations Take a point (or vector) and map that point (or vector) into another point (or vector) P Q u v T R 4D column matrices homogeneous coordinate transformation function kucg.korea.ac.kr

4 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 kucg.korea.ac.kr

5 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

6 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

7 Rotation (1/2) Simple example of 2D rotation kucg.korea.ac.kr

8 Rotation (1/2) Simple example of 2D rotation kucg.korea.ac.kr

9 Rotation (1/2) Simple example of 2D rotation kucg.korea.ac.kr

10 (a) rotation about a fixed point
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

11 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

12 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

13 Scaling (2/2) Needs Reflection – negative scale factor 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

14 Transformations in Homogeneous Coordinates
Representations in homogeneous coordinates Affine transformation – 44 matrix kucg.korea.ac.kr

15 ? Translation Point p to p’ by displacing by a distance d
translation matrix kucg.korea.ac.kr

16 Translation Point p to p’ by displacing by a distance d
kucg.korea.ac.kr

17 ? Translation Point p to p’ by displacing by a distance d
Inverse of a translation matrix ? kucg.korea.ac.kr

18 Translation Point p to p’ by displacing by a distance d
Inverse of a translation matrix kucg.korea.ac.kr

19 ? Scaling Scaling matrix with a fixed point of the origin
kucg.korea.ac.kr

20 Scaling Scaling matrix with a fixed point of the origin
kucg.korea.ac.kr

21 ? Scaling Scaling matrix with a fixed point of the origin
Inverse of a scaling matrix ? kucg.korea.ac.kr

22 Scaling Scaling matrix with a fixed point of the origin
Inverse of a scaling matrix kucg.korea.ac.kr

23 ? Rotation (1/2) Rotation with a fixed point at the origin
rotation matrix kucg.korea.ac.kr

24 ? Rotation (1/2) Rotation with a fixed point at the origin
kucg.korea.ac.kr

25 ? Rotation (1/2) Rotation with a fixed point at the origin
kucg.korea.ac.kr

26 Rotation (1/2) Rotation with a fixed point at the origin
kucg.korea.ac.kr

27 Rotation (2/2) Inverse of a rotation matrix ? kucg.korea.ac.kr

28 Rotation (2/2) Inverse of a rotation matrix : orthogonal matrix
kucg.korea.ac.kr

29 shear the object in the x direction
One more affine transformation shear the object in the x direction ? kucg.korea.ac.kr

30 shear the object in the x direction
One more affine transformation shear the object in the x direction kucg.korea.ac.kr

31 ? Shear (2/2) Shear in the x direction shearing matrix
kucg.korea.ac.kr

32 Shear (2/2) Shear in the x direction kucg.korea.ac.kr

33 ? Shear (2/2) Shear in the x direction Inverse of a shearing matrix
kucg.korea.ac.kr

34 Shear (2/2) Shear in the x direction Inverse of a shearing matrix
kucg.korea.ac.kr

35 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 M p q CBA kucg.korea.ac.kr

36 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

37 Rotation about a Fixed Point (2/3)
sequence of transformations kucg.korea.ac.kr

38 Rotation about a Fixed Point (3/3)
kucg.korea.ac.kr

39 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

40 General Rotation (2/2) kucg.korea.ac.kr

41 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

42 Instance Transformation (2/2)
kucg.korea.ac.kr

43 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

44 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

45 Rotation about an Arbitrary Axis (3/6)
sequence of rotations Determine x and y direction angles and cosines direction angles kucg.korea.ac.kr

46 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

47 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

48 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

49 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

50 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

51 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

52 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

53 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

54 Rotating a Cube (2/2) void spinCube(void) { theta[axis] += 2.0;
if( theta[axis] > ) theta[axis] -= 360.0; glutPostRedisplay(); } void mykey(char key, int mousex, int mousey) { if( key == ‘q’ || key == ‘Q’ ) exit(); } kucg.korea.ac.kr

55 Rotating a Cube (2/2) glPushMatrix( ), glPopMatrix( )
void spinCube(void) { theta[axis] += 2.0; if( theta[axis] > ) theta[axis] -= 360.0; glutPostRedisplay(); } void mykey(char key, int mousex, int mousey) { if( key == ‘q’ || key == ‘Q’ ) exit(); } glPushMatrix( ), glPopMatrix( ) perform a transformation and then return to the same state as before its execution ex) instance transformation glPushMatrix(); glTranslatef(.....); glRotatef(.....); glScalef(.....); /* draw object here */ glPopMatrix(); kucg.korea.ac.kr

56 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

57 Virtual Trackball (2/3) Rotation with a virtual trackball
projection of the trackball position to the plane kucg.korea.ac.kr

58 Virtual Trackball (3/3) Rotation with a virtual trackball (cont’)
determination of the orientation of a plane rotation angle Quaternions kucg.korea.ac.kr

59 Complex Numbers (1/3) Real part + imaginary part:
Addition and subtraction Scalar multiplication Multiplication y x z imaginary axis real axis kucg.korea.ac.kr

60 Complex Numbers (2/3) Imaginary unit: Complex conjugate Division
modulus or absolute value Division kucg.korea.ac.kr

61 Complex Numbers (3/3) Representation with polar coordinates
Euler’s formula Complex multiplication and division nth roots r θ z=(x, y) Imaginary axis real axis kucg.korea.ac.kr

62 Quaternions (1/2) One real part + three imaginary part Properties:
Addition and scalar multiplication kucg.korea.ac.kr

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

64 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 angle 2θ about the axis parallel to (ux, uy, uz) kucg.korea.ac.kr

65 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

66 Rotations with Quaternions (2/2)
Obtain the rotation matrix by quaternion multiplication Include the translations kucg.korea.ac.kr

67 Example Rotation about z axis Set the unit quaternion:
Substitute a=b=0, c=sin(θ/2) into the matrix: kucg.korea.ac.kr


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

Similar presentations


Ads by Google