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

Slides:



Advertisements
Similar presentations
Computer Graphics - Transformation -
Advertisements

1Computer Graphics Homogeneous Coordinates & Transformations Lecture 11/12 John Shearer Culture Lab – space 2
Transformations Ed Angel Professor Emeritus of Computer Science
Computer Graphics Lecture 4 Geometry & Transformations.
Math 1Hofstra University – CSC171A1 Modeling Objects by Polygonal Approximations Define volumetric objects in terms of surfaces patches that surround the.
2/7/2001Hofstra University – CSC290B1 Review: Math (Ch 4)
Modeling Objects by Polygonal Approximations
Transformations Objectives Understand how transformations work in 2D and 3D Understand the concept of homogenous coordinate system Understand scene graphs.
Objectives Learn to build arbitrary transformation matrices from simple transformations Learn to build arbitrary transformation matrices from simple transformations.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL Transformations Ed Angel Professor of Computer Science, Electrical and Computer.
Chapter 3: Geometric Objects and Transformations Part 2
Transformations CS4395: Computer Graphics 1 Mohan Sridharan Based on slides created by Edward Angel.
2D Transformations x y x y x y. 2D Transformation Given a 2D object, transformation is to change the object’s Position (translation) Size (scaling) Orientation.
Geometric Objects and Transformations Geometric Entities Representation vs. Reference System Geometric ADT (Abstract Data Types)
CS 480/680 Computer Graphics Representation Dr. Frederick C Harris, Jr. Fall 2012.
Geometric Transformation. So far…. We have been discussing the basic elements of geometric programming. We have discussed points, vectors and their operations.
Fundamentals of Computer Graphics Part 4
Transformations Dr. Amy Zhang.
CS 480/680 Computer Graphics Transformations Dr. Frederick C Harris, Jr.
OpenGL Matrices and Transformations Angel, Chapter 3 slides from AW, Red Book, etc. CSCI 6360.
Graphics Graphics Korea University kucg.korea.ac.kr Transformations 고려대학교 컴퓨터 그래픽스 연구실.
Transformations Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
PPT&Programs&Labcourse 1.
Geometric Objects and Transformation
16/5/ :47 UML Computer Graphics Conceptual Model Application Model Application Program Graphics System Output Devices Input Devices API Function.
CAP 4730 Computer Graphic Methods Prof. Roy Levow Chapter 4.
Computer Graphics I, Fall 2010 OpenGL Transformations.
1 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009 OpenGL Transformations.
Geometric Transformations
Affine Transformation. Affine Transformations In this lecture, we will continue with the discussion of the remaining affine transformations and composite.
Transformations Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
3D Geometric Transformation
Learning Objectives Affine transformations Affine transformations Translation Translation Rotation Rotation Scaling Scaling Reflection Reflection Shear.
Graphics Graphics Korea University cgvr.korea.ac.kr Mathematics for Computer Graphics 고려대학교 컴퓨터 그래픽스 연구실.
1 OpenGL Transformations. 2 Objectives Learn how to carry out transformations in OpenGL ­Rotation ­Translation ­Scaling Introduce OpenGL matrix modes.
Geometric Transformations. Transformations Linear transformations Rigid transformations Affine transformations Projective transformations T Global reference.
Computer Graphics I, Fall 2010 Transformations.
1 Geometric Transformations Modelling Transforms By Dr.Ureerat Suksawatchon.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Transformations Ed Angel Professor of Computer Science, Electrical and Computer Engineering,
Geometric Transformations Ceng 477 Introduction to Computer Graphics Computer Engineering METU.
CSCE 441 Computer Graphics: 2D Transformations
4. Geometric Objects and Transformations
OpenGL Matrices and Transformations Angel, Chapter 3 slides from AW, Red Book, etc. CSCI 6360/4360.
Objectives Introduce standard transformations Introduce standard transformations Derive homogeneous coordinate transformation matrices Derive homogeneous.
Forward Projection Pipeline and Transformations CENG 477 Introduction to Computer Graphics.
Viewing 고려대학교 컴퓨터 그래픽스 연구실 kucg.korea.ac.kr.
OpenGL Transformations
Transformations Objectives
3D Geometric Transformation
OpenGL Transformations
2D Geometric Transformations
Review: Transformations
3D Transformation.
OpenGL Transformations
Computer Graphics OpenGL Transformations
Review: Transformations
OpenGL Transformations
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
Unit-5 Geometric Objects and Transformations-II
CSC4820/6820 Computer Graphics Algorithms Ying Zhu Georgia State University Transformations.
Geometric Transformations
Transformations in OpenGL
Transformations Ed Angel
Geometric Objects and Transformations (II)
Transformations Ed Angel Professor Emeritus of Computer Science
Isaac Gang University of Mary Hardin-Baylor
OpenGL Transformations
OpenGL Transformations
Translation in Homogeneous Coordinates
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

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

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

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

(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

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

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 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 the object in the x direction One more affine transformation shear the object in the x direction ? kucg.korea.ac.kr

shear the object in the x direction 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

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

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

Rotation about a Fixed Point (3/3) 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

Instance Transformation (2/2) 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) sequence of rotations Determine x and y direction angles and cosines 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) glPushMatrix( ), glPopMatrix( ) 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( ), 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

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

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

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

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

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

Quaternions (2/2) Ordered-pair notation Addition: Multiplication 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 angle 2θ 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