Transformations. Questions on Assignment 1? Announcements

Similar documents
Computer Graphics. Chapter 5 Geometric Transformations. Somsak Walairacht, Computer Engineering, KMITL

Vector Algebra Transformations. Lecture 4

Transforms. COMP 575/770 Spring 2013

2D/3D Geometric Transformations and Scene Graphs

Math background. 2D Geometric Transformations. Implicit representations. Explicit representations. Read: CS 4620 Lecture 6

1 Transformations. Chapter 1. Transformations. Department of Computer Science and Engineering 1-1

Today. Today. Introduction. Matrices. Matrices. Computergrafik. Transformations & matrices Introduction Matrices

Lecture 4: Transformations and Matrices. CSE Computer Graphics (Fall 2010)

Geometric Transformations

3D Mathematics. Co-ordinate systems, 3D primitives and affine transformations

CT5510: Computer Graphics. Transformation BOCHANG MOON

Lecture 4: Transforms. Computer Graphics CMU /15-662, Fall 2016

Last week. Machiraju/Zhang/Möller/Fuhrmann

Matrices. Chapter Matrix A Mathematical Definition Matrix Dimensions and Notation

Affine Transformations in 3D

CS354 Computer Graphics Rotations and Quaternions

Transformations Week 9, Lecture 18

N-Views (1) Homographies and Projection

Today. Parity. General Polygons? Non-Zero Winding Rule. Winding Numbers. CS559 Lecture 11 Polygons, Transformations

UNIT 2 2D TRANSFORMATIONS

S U N G - E U I YO O N, K A I S T R E N D E R I N G F R E E LY A VA I L A B L E O N T H E I N T E R N E T

Computer Graphics Geometric Transformations

3D Geometry and Camera Calibration

To Do. Outline. Translation. Homogeneous Coordinates. Foundations of Computer Graphics. Representation of Points (4-Vectors) Start doing HW 1

3D Transformations. CS 4620 Lecture 10. Cornell CS4620 Fall 2014 Lecture Steve Marschner (with previous instructors James/Bala)

3D Transformations. CS 4620 Lecture Kavita Bala w/ prior instructor Steve Marschner. Cornell CS4620 Fall 2015 Lecture 11

2D and 3D Transformations AUI Course Denbigh Starkey

Mathematics 308 Geometry. Chapter 9. Drawing three dimensional objects

For each question, indicate whether the statement is true or false by circling T or F, respectively.

Vector Calculus: Understanding the Cross Product

INTRODUCTION TO COMPUTER GRAPHICS. It looks like a matrix Sort of. Viewing III. Projection in Practice. Bin Sheng 10/11/ / 52

What You ll See in This Chapter. Word Cloud. Definitions. Matrix Components. Ian Parberry University of North Texas. Fletcher Dunn

GEOMETRIC TRANSFORMATIONS AND VIEWING

Answers. Chapter 2. 1) Give the coordinates of the following points:

Translation. 3D Transformations. Rotation about z axis. Scaling. CS 4620 Lecture 8. 3 Cornell CS4620 Fall 2009!Lecture 8

Visual Recognition: Image Formation

EECE 478. Learning Objectives. Learning Objectives. Linear Algebra and 3D Geometry. Linear algebra in 3D. Coordinate systems

Lecture 6 Sections 4.3, 4.6, 4.7. Wed, Sep 9, 2009

CALCULATING TRANSFORMATIONS OF KINEMATIC CHAINS USING HOMOGENEOUS COORDINATES

Geometric transformations assign a point to a point, so it is a point valued function of points. Geometric transformation may destroy the equation

Graphics and Interaction Transformation geometry and homogeneous coordinates

Linear and Affine Transformations Coordinate Systems

COMP30019 Graphics and Interaction Transformation geometry and homogeneous coordinates

(Refer Slide Time: 00:04:20)

CS 428: Fall Introduction to. Transformations in OpenGL + hierarchical modeling. Andrew Nealen, Rutgers, /21/2009 1

Overview. By end of the week:

Orientation & Quaternions

Agenda. Rotations. Camera models. Camera calibration. Homographies

3D Transformations World Window to Viewport Transformation Week 2, Lecture 4

Transformations. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

Specifying Complex Scenes

Rendering Pipeline and Coordinates Transforms

CSC 470 Computer Graphics

INTRODUCTION TO COMPUTER GRAPHICS. cs123. It looks like a matrix Sort of. Viewing III. Projection in Practice 1 / 52

Object Representation Affine Transforms. Polygonal Representation. Polygonal Representation. Polygonal Representation of Objects

CS 4204 Computer Graphics

Three-Dimensional Viewing Hearn & Baker Chapter 7

3D Viewing Episode 2

AH Matrices.notebook November 28, 2016

2D transformations: An introduction to the maths behind computer graphics

Transformations: 2D Transforms

Transforms 1 Christian Miller CS Fall 2011

Monday, 12 November 12. Matrices

Advanced Computer Graphics Transformations. Matthias Teschner

Camera Calibration. COS 429 Princeton University

Game Engineering CS S-05 Linear Transforms

2D and 3D Coordinate Systems and Transformations

CS559: Computer Graphics

MTRX4700 Experimental Robotics

Chapter 3 - Basic Mathematics for 3D Computer Graphics

Basic Elements. Geometry is the study of the relationships among objects in an n-dimensional space

Lecture 9: Transformations. CITS3003 Graphics & Animation

3-D D Euclidean Space - Vectors

CS4620/5620. Professor: Kavita Bala. Cornell CS4620/5620 Fall 2012 Lecture Kavita Bala 1 (with previous instructors James/Marschner)

Notes on Assignment. Notes on Assignment. Notes on Assignment. Notes on Assignment

CSE528 Computer Graphics: Theory, Algorithms, and Applications

Linear transformations Affine transformations Transformations in 3D. Graphics 2009/2010, period 1. Lecture 5: linear and affine transformations

3D Viewing Episode 2

CS770/870 Spring 2017 Quaternions

CS612 - Algorithms in Bioinformatics

CS6670: Computer Vision

UNIT 2. Translation/ Scaling/ Rotation. Unit-02/Lecture-01

Transformations IV. Week 3, Wed Jan 20

Viewing and Projection

Animation. Keyframe animation. CS4620/5620: Lecture 30. Rigid motion: the simplest deformation. Controlling shape for animation

Coordinate Transformations & Homogeneous Coordinates

Affine Transformation. Edith Law & Mike Terry

This week. CENG 732 Computer Animation. Warping an Object. Warping an Object. 2D Grid Deformation. Warping an Object.

Computer Vision Projective Geometry and Calibration. Pinhole cameras

Hello, welcome to the video lecture series on Digital Image Processing. So in today's lecture

Reading. Hierarchical Modeling. Symbols and instances. Required: Angel, sections , 9.8. Optional:

CSE328 Fundamentals of Computer Graphics: Theory, Algorithms, and Applications

Homogeneous Coordinates

Fall CSCI 420: Computer Graphics. 2.2 Transformations. Hao Li.

Linear algebra deals with matrixes: two-dimensional arrays of values. Here s a matrix: [ x + 5y + 7z 9x + 3y + 11z

CS184: Using Quaternions to Represent Rotation

CV: 3D sensing and calibration

Section III: TRANSFORMATIONS

CS 130 Final. Fall 2015

CS770/870 Spring 2017 Transformations

Transcription:

Announcements Is your account working yet? Watch out for ^M and missing newlines Assignment 1 is due next Thursday at midnight Check the webpage and newsgroup for answers to questions about the assignment Questions on Assignment 1? Transformations Vectors, bases, and matrices Translation, rotation, scaling Postscript Examples Homogeneous coordinates 3D transformations 3D rotations Transforming normals Nonlinear deformations Angel, Chapter 4 1

Uses of Transformations Modeling transformations build complex models by positioning simple components transform from object coordinates to world coordinates Viewing transformations placing the virtual camera in the world i.e. specifying transformation from world coordinates to camera coordinates Animation vary transformations over time to create motion OBJECT CAMERA WORLD General Transformations Q = T(P) for points V = R(u) for vectors 2

Rigid Body Transformations Rotation angle and line about which to rotate Non-rigid Body Transformations 3

Background Math: Linear Combinations of Vectors Given two vectors, A and B, walk any distance you like in the A direction, then walk any distance you like in the B direction The set of all the places (vectors) you can get to this way is the set of linear combinations of A and B. A set of vectors is said to be linearly independent if none of them is a linear combination of the others. V V = v 1 A + v 2 B, (v 1,v 2 ) ƒ A B Bases A basis is a linearly independent set of vectors whose combinations will get you anywhere within a space, i.e. span the space n vectors are required to span an n-dimensional space If the basis vectors are normalized and mutually orthogonal the basis is orthonormal There are lots of possible bases for a given vector space; there s nothing special about a particular basis but our favorite is probably one of these. z y x z y x 4

Vectors Represented in a Basis Every vector has a unique representation in a given basis the multiples of the basis vectors are the vector s components or coordinates changing the basis changes the components, but not the vector V = v 1 E 1 + v 2 E 2 + v n E n The vectors {E 1, E 2,, E n } are the basis The scalars (v 1, v 2,, v n ) are the components of V with respect to that basis Rotation and Translation of a Basis,,, 5

Linear and Affine Maps A function (or map, or transformation) F is linear if F(A+B) = F(A) + F(B) F(kA) = k F(A) for all vectors A and B, and all scalars k. Any linear map is completely specified by its effect on a set of basis vectors: V = v 1 E 1 + v 2 E 2 +v 3 E 3 F(V) = F(v 1 E 1 + v 2 E 2 +v 3 E 3 ) = F(v 1 E 1 ) + F(v 2 E 2 ) + F(v 3 E 3 ) = v 1 F(E 1 ) + v 2 F(E 2 ) +v 3 F(E 3 ) A+B A function F is affine if it is linear plus a translation Thus the 1-D transformation y=mx+b is not linear, but affine Similarly for a translation and rotation of a coordinate system Affine transformations preserve lines A B Transforming a Vector The coordinates of the transformed basis vector (in terms of the original basis vectors): The transformed general vector V becomes: and its coordinates (still w.r.t. E) are or just F(E 1 ) = f 11 E 1 + f 21 E 2 +f 31 E 3 F(E 2 ) = f 12 E 1 + f 22 E 2 +f 32 E 3 F(E 3 ) = f 13 E 1 + f 23 E 2 +f 33 E 3 F(V) = v 1 F(E 1 ) + v 2 F(E 2 ) +v 3 F(E 3 ) = (f 11 E 1 + f 21 E 2 +f 31 E 3 )v 1 + (f 12 E 1 + f 22 E 2 +f 32 E 3 )v 2 + (f 13 E 1 + f 23 E 2 +f 33 E 3 )v 3 = (f 11 v 1 + f 12 v 2 + f 13 v 3 )E 1 + (f 21 v 1 + f 22 v 2 + f 23 v 3 )E 2 + (f 31 v 1 + f 32 v 2 + f 33 v 3 )E 3 v 1 = (f 11 v 1 + f 12 v 2 + f 13 v 3 ) v 2 = (f 21 v 1 + f 22 v 2 + f 23 v 3 ) v 3 = (f 31 v 1 + f 32 v 2 + f 33 v 3 ) v i = 6j f ij v j The matrix multiplication formula! 6

Matrices to the Rescue An nxn matrix F represents a linear function in n dimensions i-th column shows what the function does to the corresponding basis vector Transformation = linear combination of columns of F first component of the input vector scales first column of the matrix accumulate into output vector repeat for each column and component Usually compute it a different way: dot row i with input vector to get component i of output vector ^ ` v1 v 2 v 3 ^ = f 11 f 12 f 13 ` f f f 21 22 23 f 31 f 32 f 33 v ^ ` v1 2 v i = 6j f ij v 3 v j Translate x x t x ªx º y y t y «y ¼ Scale x s x x ªx º y s y y «y ¼ Rotate x x cost y sin T y x sin T y cos T Basic 2D Transformations ªx º «y ª t º x «¼ t y ¼ x x t ªs x 0 ºªx º «0 s «y ¼ y ¼ x Sx ªx º ªcos T sin T ºªx º «y ¼ «sin T cos T ¼ «y ¼ x Rx Parameters t, s, and T are the control knobs 7

Compound Transformations Build compound transformations by stringing basic ones together, e.g. translate p to the origin, rotate, then translate back can also be described as a rotation about p Any sequence of linear transformations can be collapsed into a single matrix formed by multiplying the individual matrices together v i = m ij = 6j f ij g jk 6k v k 6j f ij g jk v k = 6k 6j f ij g jk This is good: can apply a whole sequence of transformation at once 0 1 2 3 Translate to the origin, rotate, then translate back. Postscript (Interlude) Postscript is a language designed for Printed page description Electronic documents A full programming language, with variables, procedures, scope, looping, Stack based, i.e. instead of 1+2 you say 1 2 add We ll briefly look at graphics in Postscript elegant handling of 2-D affine transformations and simple 2-D graphics 8

2D Transformations in Postscript, 1 0 0 moveto (test) show 1 0 translate 0 0 moveto (test) show 30 rotate 0 0 moveto (test) show test test test 2D Transformations in Postscript, 2 1 2 scale 0 0 moveto (test) show 1 0 translate 30 rotate 0 0 moveto (test) show 30 rotate 1 0 translate 0 0 moveto (test) show test test test 9

2D Transformations in Postscript, 3 30 rotate 1 2 scale 0 0 moveto (test) show test 1 2 scale 30 rotate 0 0 moveto (test) show test -1 1 scale 0 0 moveto (test) show test Homogeneous Coordinates Translation is not linear--how to represent as a matrix? Trick: add extra coordinate to each vector ªx º «y «1 ¼ ª1 0 t x ºªx º «0 1 t «y y ««0 0 1 ¼ 1 ¼ This extra coordinate is the homogeneous coordinate, or w When extra coordinate is used, vector is said to be represented in homogeneous coordinates Drop extra coordinate after transformation (project to w=1) We call these matrices Homogeneous Transformations 10

W!? Where did that come from? Practical answer: W is a clever algebraic trick. Don t worry about it too much. The w value will be 1.0 for the time being. If w is not 1.0, divide all coordinates by w to make it so. Clever Academic Answer: (x,y,w) coordinates form a 3D projective space. All nonzero scalar multiples of (x,y,1) form an equivalence class of points that project to the same 2D Cartesian point (x,y). For 3-D graphics, the 4D projective space point (x,y,z,w) maps to the 3D point (x,y,z) in the same way. Homogeneous 2D Transformations The basic 2D transformations become Translate: Scale: Rotate: ª 1 0 t x º «0 1 t y «0 0 1 ¼ ªs x 0 0º «0 s y 0 «0 0 1¼ ª cost sint 0º «sint cost 0 «0 0 1 ¼ Any affine transformation can be expressed as a combination of these. We can combine homogeneous transforms by multiplication. Now any sequence of translate/scale/rotate operations can be collapsed into a single homogeneous matrix! 11

Postscript and OpenGL Transformations Postscript Equivalent OpenGL 30 rotate 1 0 translate draw something (x,y ) coord. sys. (x,y) coord. sys. glrotatef(30, 0,0,1); // rot 30 about z axis gltranslatef(1,0,0); draw something ª x º ª cost sint «y «sint cost «««1 ¼ «0 0 in this caset 30q, t x 0º ª 1 0 «0 «1 ¼«0 1, t y 0 1 0 0 tx º ª xº t «y y «1 ¼«1 ¼ PARAMETERS Sequences of Transformations M M M x x x x x x x x x x UNTRANSFORMED POINTS x x x x x x x x x TRANSFORMED POINTS MATRICES Often the same transformations are applied to many points Calculation time for the matrices and combination is negligible compared to that of transforming the points Reduce the sequence to a single matrix, then transform 12

Collapsing a Chain of Matrices. Consider the composite function ABCD, i.e. p = ABCDp Matrix multiplication isn t commutative - the order is important But matrix multiplication is associative, so can calculate from right to left or left to right: ABCD = (((AB) C) D) = (A (B (CD))). Iteratively replace either the leading or the trailing pair by its product M m D M m CM M m BM M m AM Premultiply or M m A M m MB M m MC M m MD Postmultiply both give the same result. Postmultiply: left-to-right (reverse of function application.) Premultiply: right-to-left (same as function application.) Implementing Transformation Sequences Calculate the matrices and cumulatively multiply them into a global Current Transformation Matrix Postmultiplication is more convenient in hierarchies -- multiplication is computed in the opposite order of function application The calculation of the transformation matrix, M, initialize M to the identity in reverse order compute a basic transformation matrix, T post-multiply T into the global matrix M, M m MT Example - to rotate by T around [x,y]: glloadidentity() /* initialize M to identity mat.*/ gltranslatef(x, y, 0) /* LAST: undo translation */ glrotatef(theta,0,0,1) /* rotate about z axis */ gltranslatef(-x, -y, 0) /* FIRST: move [x,y] to origin. */ Remember the last T calculated is the first applied to the points calculate the matrices in reverse order 13

Column Vector Convention The convention in the previous slides transformation is by matrix times vector, Mv textbook uses this convention, 90% of the world too ªx º «y «1 ¼ ªm 11 m 12 m 13 ºªx º «m 21 m 22 m 23 «y «m 31 m 32 m 33 1 ¼ «¼ The composite function A(B(C(D(x)))) is the matrixvector product ABCDx Beware: Row Vector Convention The transpose is also possible ª º «m 13 m 23 m 33 ¼ > x y 1@ > x y 1@ m 11 m 21 m 31 «m 12 m 22 m 32 How does this change things? all transformation matrices must be transposed ABCDx transposed is x T D T C T B T A T pre- and post-multiply are reversed OpenGL uses transposed matrices! You only notice this if you pass matrices as arguments to OpenGL subroutines, e.g. glloadmatrix. Most routines take only scalars or vectors as arguments. 14

Rigid Body Transformations A transformation matrix of the form x x x y t x y x y y t y 0 0 1 where the upper 2x2 submatrix is a rotation matrix and column 3 is a translation vector, is a rigid body transformation. Any series of rotations and translations results in a rotation and translation of this form Viewport Transformations A transformation maps the visible (model) world onto screen or window coordinates In OpenGL a viewport transformation, e.g. glortho(), defines what part of the world is mapped in standard Normalized Device Coordinates ((-1,-1) to (1,1)) The viewpoint transformation maps NDC into actual window, pixel coordinates by default this fills the window otherwise use glviewport (4.7,2) (640,480) (0,0) (2,0) 15

3D Transformations 3-D transformations are very similar to the 2-D case Homogeneous coordinate transforms require 4x4 matrices Scaling and translation matrices are simply: S = s 0 0 0 0 0 s 1 0 0 0 0 s 2 0 0 0 0 1 Rotation is a bit more complicated in 3-D left- or right-handedness of coordinate system affects direction of rotation different rotation axes T = 1 0 0 t 0 0 1 0 t 1 0 0 1 t 2 0 0 0 1 3-D Coordinate Systems Right-handed vs. left-handed (out of page) Z Y X Z-axis determined from X and Y by cross product: Z=X Y Z Xu Y ª X 2Y3 X 3Y2 º «X 3Y1 X1Y3 ««X1Y2 X 2Y1 ¼ Cross product follows right-hand rule in a right-handed coordinate system, and left-hand rule in left-handed system. Y (into page) Z X 16

Euler Angles for 3-D Rotations Euler angles - 3 rotations about each coordinate axis, however angle interpolation for animation generates bizarre motions rotations are order-dependent, and there are no conventions about the order to use Widely used anyway, because they're simple Coordinate axis rotations (right-handed coordinates): R x = 1 0 0 0 0 cos sin 0 0 sin cos 0 0 0 0 1 R y = cos 0 sin 0 0 1 0 0 sin 0 cos 0 0 0 0 1 R z = cos sin 0 0 sin cos 0 0 0 0 1 0 0 0 0 1 Euler Angles for 3-D Rotations 17

Axis-angle rotation The matrix R rotates by D about axis (unit) v: R vv T vv T cosd ( I vv T Project onto v ) sindv * I vv v * T Project onto v s normal plane Dual matrix. Project onto normal plane, flip by 90q cosd,sind Rotate by D (assumes v is unit.) in normal plane ª0 z y º v * «z 0 x ««y x 0 ¼ The Dual Matrix If v=[x,y,z] is a vector, the skew-symmetric matrix is the dual matrix of v Cross-product as a matrix multiply: v * a = v x a helps define rotation about an arbitrary axis angular velocity and rotation matrix time derivatives Geometric interpretation of v * a project a onto the plane normal to v rotate a by 90 about v resulting vector is perpendicular to v and a 18

Quaternions Complex numbers can represent 2-D rotations Quaternions, a generalization of complex numbers, can represent 3-D rotations Quaternions represent 3-D rotations with 4 numbers: 3 give the rotation axis - magnitude is sin D/2 1 gives cos D/2 unit magnitude - points on a 4-D unit sphere Advantages: no trigonometry required multiplying quaternions gives another rotation (quaternion) rotation matrices can be calculated from them direct rotation (with no matrix) no favored direction or axis See Angel 4.11 What is a Normal? Indication of outward facing direction for lighting and shading Order of definition of vertices in OpenGL Right hand rule Note: GL conventions glfrontface(gl_ccw) glfrontface(gl_cw) 19

Transforming Normals It s tempting to think of normal vectors as being like porcupine quills, so they would transform like points Alas, it s not so, consider the 2D affine transformation below. We need a different rule to transform normals. Normals Do Not Transform Like Points If M is a 4x4 transformation matrix, then To transform points, use p =Mp, where p=[x y z 1] T So to transform normals, n =Mn, where n=[a b c 1] T right? Wrong! This formula doesn t work for general M. 20

T T T T T Normals Transform Like Planes A plane ax by cz d n p ( a,b,c) is the plane normal, d is the offset. If p is pc nc n T n ( M ( n nc Mp ( n n p To find the answer, do some magic : 0 Ip pc M M equation for point on M) p )( Mp) equation for point on to transform point 1 1 1 ) 0, T where M 1T n n transformed, how should 0 can be written T > a b c d@, p > x y z 1@ n transform? plane in original space plane in transformed space to transform plane T Transforming Normals - Cases For general transformations M that include perspective, use full formula (M inverse transpose), use the right d d matters, because parallel planes do not transform to parallel planes in this case For affine transformations, d is irrelevant, can use d=0. For rotations only, M inverse transpose = M, can transform normals and points with same formula. 21

Spatial Deformations Linear transformations take any point (x,y,z) to a new point (x,y,z ) Non-rigid transformations such as shear are deformations Linear transformations aren t the only types! A transformation is any rule for computing (x,y,z ) as a function of (x,y,z). Nonlinear transformations would enrich our modeling capabilities. Start with a simple object and deform it into a more complex one. Bendy Twisties Method: define a few simple shapes define a few simple non-linear transformations (deformations e.g. bend/twist, taper) make complex objects by applying a sequence of deformations to the basic objects Problem: a sequence of non-linear transformations can not be collapsed to a single function every point must be transformed by every transformation 22

Bendy Twisties Example: Z-Taper Method: align the simple object with the z-axis apply the non-linear taper (scaling) function to alter its size as some function of the z-position Example: applying a linear taper to a cylinder generates a cone Linear taper: x k 1 z k 2 x y k 1 z k 2 y z z General taper (f is any function you want): x f (z)x y f (z)y z z 23

Example: Z-twist Method: align simple object with the z-axis rotate the object about the z-axis as a function of z Define angle, T, to be an arbitrary function f (z) Rotate the points at z by T = f (z) Linear version: T f (z) x x cos(t) y sin(t) y x sin(t) y cos(t) z z f (z) kz Extensions Incorporating deformations into a modeling system How to handle UI issues? Free-form deformations for arbitrary warping of space Use a 3-D lattice of control points to define Bezier cubics: (x,y,z ) are piecewise cubic functions of (x,y,z) Widely used in commercial animation systems Physically based deformations Based on material properties Reminiscent of finite element analysis 24