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

Size: px
Start display at page:

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

Transcription

1 Graphics 2009/2010, period 1 Lecture 5 Linear and affine transformations

2 Vector transformation: basic idea Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Multiplication of an n n matrix with a vector (i.e. a n 1 matrix): ( a11 a In 2D: 12 a 21 a 22 ) ( ) x = y ( ) a11 x + a 12 y a 21 x + a 22 y a 11 a 12 a 13 x a 11 x + a 12 y + a 13 z In 3D: a 21 a 22 a 23 y = a 21 x + a 22 y + a 23 z a 31 a 32 a 33 z a 31 x + a 32 y + a 33 z The result is a (transformed) vector.

3 Example: scaling Definition Examples Finding matrices Compositions of transformations Transposing normal vectors To scale with a factor two with respect to the origin, we apply the matrix ( ) to a vector: ( ) ( ) 2 0 x 0 2 y = ( ) 2x + 0y = 0x + 2y ( ) 2x 2y

4 Definition Examples Finding matrices Compositions of transformations Transposing normal vectors A function T : R n R m is called a linear transformation if it satisfies 1 T (u + v) = T (u) + T (v) for all u, v R n. 2 T (cv) = ct (v) for all v R n and all scalars c. Or (alternatively), if it satisfies T (c 1 u + c 2 v) = c 1 T (u) + c 2 T (v) for all u, v R n and all scalars c 1, c 2. v T (v) u + v u T (u + v) T (u) can be represented by matrices

5 Example: scaling Definition Examples Finding matrices Compositions of transformations Transposing normal vectors We already saw scaling by a factor of 2. In general, a matrix ( a a 22 ) scales the i-th coordinate of a vector by the factor a ii 0, i.e. ( a a 22 ) ( ) x = y ( ) a11 x a 22 y

6 Example: scaling Scaling does not have to be uniform. Here, we scale with a factor one half in x-direction, and three in y-direction: ( 1 ) ( ) 2 0 x 0 3 y = ( 1 2 x ) 3y Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Q: what is the inverse of this matrix?

7 Example: projection We can also use matrices to do orthographic projections, for instance, onto the Y -axis: ( ) ( ) 0 0 x 0 1 y = ( ) 0 y Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Q: what is the inverse of this matrix?

8 Example: reflection Reflection in the line y = x boils down to swapping x- and y-coordinates: ( ) ( ) 0 1 x 1 0 y = ( ) y x Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Q: what is the inverse of this matrix?

9 Example: more reflections Definition Examples Finding matrices Compositions of transformations Transposing normal vectors

10 Example: shearing Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Shearing in x-direction pushes things sideways : ( ) ( ) 1 1 x 0 1 y = ( ) x + y y Q: What is the matrix for pushing things upwards, i.e. for shearing in y-direction?

11 Example: shearing Definition Examples Finding matrices Compositions of transformations Transposing normal vectors General case for shearing in x-direction: ( ) ( ) 1 s x 0 1 y ( ) x + sy = y Q: What is the inverse of this matrix?

12 Example: rotation Definition Examples Finding matrices Compositions of transformations Transposing normal vectors To rotate 45 about the origin, we apply the matrix ( 1 ) Note: = cos 45 = sin 45, so this is the same as ( cos 45 sin 45 ) sin 45 cos 45

13 Example: rotation Definition Examples Finding matrices Compositions of transformations Transposing normal vectors General case for a counterclockwise rotation about an angle φ around the origin: ( ) cos φ sin φ sin φ cos φ Q: what is the matrix for clockwise rotation?

14 Finding matrices Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Applying matrices is pretty straightforward, but how do we find the matrix for a given linear transformation? ( ) a11 a Let A = 12 a 21 a 22 Q: what is the significance of the column vectors of A?

15 Finding matrices Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Scaling (factors a, b 0): Shearing (x-dir., factor 1): Reflection (in line y = x): ( ) ( ) a 0 x 0 b y ( ) ( ) 1 1 x 0 1 y ( ) ( ) 0 1 x 1 0 y = = = ( ) ax by ( ) x + y y ( ) y x ( ) ( ) Rotation (countercl., 45 ): x y = 1 2 ( ) x y 2 x + y

16 Finding matrices Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Aha! The column vectors of a transformation matrix are the images of the base vectors! That gives us an easy method of finding the matrix for a given linear transformation. Why? Because matrix multiplication is a linear transformation.

17 Finding matrices Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Let s look at carthesian coordinates, where each vector v can be represented as a linear combination of the base vectors: v = ( ) x = x y ( ) 1 + y 0 ( ) 0 1 If we apply a linear transformation T to this vector, we get: ( x T ( y ) ) = T (x ( ) 1 + y 0 ( ) 0 ) = xt ( 1 ( ) ( ) 1 0 ) + yt ( ) 0 1

18 Finding matrices: example Rotation (counterclockwise, angle φ): Definition Examples Finding matrices Compositions of transformations Transposing normal vectors ( cos φ ) sin φ sin φ cos φ

19 Example: reflection and scaling Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Multiple transformations can be combined into one. Here, we first do a reflection in the line y = x, and then we scale with a factor 5 in x-direction, and a factor 2 in y-direction: ( ) ( ) = ( ) Remember: matrix multiplication is associative, i.e. A(Bx) = (AB)x.

20 Example: reflection and scaling Definition Examples Finding matrices Compositions of transformations Transposing normal vectors But: Matrix multiplication is not commutative, i.e. in general AB BA, for example: ( ) ( ) ( ) x = y ( ) ( ) ( ) x = y Mind the order! ( ( ) ( ) x = y ) ( ) x = y ( ) 5y 2x ( ) 2y 5x

21 Transposing normal vectors Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Unfortunately, normal vectors are not always transformed properly. E.g. look at shearing, where tangent vectors are correctly transformed but normal vectors not. To transform a normal vector n correctly under a given linear transformation A, we have to apply the matrix (A 1 ) T.

22 Transposing normal vectors Definition Examples Finding matrices Compositions of transformations Transposing normal vectors To transform a normal vector n correctly under a given linear transformation A, we have to apply the matrix (A 1 ) T. We know that tangent vectors are tranformed correctly: At = t A. But this is not necessarily true for normal vectors: An n A. Goal: find a matrix N A that transforms n correctly, i.e. find N A with N A n = n N where n N is the correct normal vector of the transformed surface.

23 Transposing normal vectors Definition Examples Finding matrices Compositions of transformations Transposing normal vectors Q: obviously, for shearing, normal vectors behave funny. But what about rotations? And scalings (uniform and non-uniform)? exercise in the tutorials

24 Problem and solution: homogeneous coordinates More complex transformations So now we know how to determine matrices for a given transformation. Let s try another one: Q: what is the matrix for a rotation of 90 about the point (2, 1)?

25 Problem and solution: homogeneous coordinates More complex transformations We can form our transformation by composing three simpler transformations: Translate everything such that the center of rotation maps to the origin. Rotate about the origin. Revert the translation from the first step. Q: but what is the matrix for a translation?

26 Problem and solution: homogeneous coordinates More complex transformations Translation is not a linear transformation. With linear translations we get: ( ) a11 x + a Ax = 12 y a 21 x + a 22 y But we need something like: ( ) x + xt x + y t We can do this with a combination of linear transformations and translations called affine transformations.

27 Problem and solution: homogeneous coordinates Homogeneous coordinates Observation: Shearing in 2D smells a lot like translation in 1D...

28 Problem and solution: homogeneous coordinates Homogeneous coordinates... and shearing in 3D smells like translation in 2D (... and shearing in 4D... )

29 Problem and solution: homogeneous coordinates Homogeneous coordinates Idea: Move one dimension higher by adding so called homogeneous coodinates.

30 Problem and solution: homogeneous coordinates Homogeneous coordinates Shearing in 3D based on the z-coordinate is a simple generalization of 2D shearing: 1 0 x t x x + x t z 0 1 y t y = y + y t z z z Or if we only look at the plane z = 1: 1 0 x t x x + x t 0 1 y t y = y + y t

31 Problem and solution: homogeneous coordinates Homogeneous coordinates Translations in 2D can be represented as shearing in 3D by looking at the plane z = 1. ( ) xt The matrix for a translation over the vector t = is 1 0 x t 0 1 y t How should we represent points then? And vectors? y t

32 Problem and solution: homogeneous coordinates Homogeneous coordinates (i.e. linear transformations and translations) can then be done with simple matrix multiplication if we add homogeneous coordinates, i.e. (in 2D): a third coordinate z = 1 x to each location: y 1 a third coordinate z = 0 x to each vector: y 0 a third row ( ) to each matrix:

33 Problem and solution: homogeneous coordinates Homogeneous coordinates Note: this extension is consistent with what we learned so far, e.g. Scaling and moving a location (or an object ): 1 0 x t s x s 1 0 x t x s 1x + x t 0 1 y t 0 s 2 0 y = 0 s 2 y t y = s 2y + y t Scaling (but not moving!) a vector: s 1 0 x t x s 1x 0 s 2 y t y = s 2y

34 Problem and solution: homogeneous coordinates : example Q: What is the matrix for reflection in the line y = x + 5? Hint: move everything to the origin, reflect, and the move everything back.

35 Problem and solution: homogeneous coordinates : example 1. Translation of y = x + 5 to y = x 1 0 x t x x + x t 0 1 y t y = y + y t Reflection on y = x: ( 0 ) Translate y = x back to y = x + 5

36 Problem and solution: homogeneous coordinates Q: The matrix for reflection in the line y = x + 5 is Q: what is the significance of the columns of the matrix?

37 Problem and solution: homogeneous coordinates Q: what is the significance of the columns of the matrix? Aha! The last column vector is the image of the origin after applying the affine transformation (Remember: The other columns are the image of the base vectors under the linear transformation) (Also remember: The coordinates in the last row are called homogeneous coordinates)

38 Problem and solution: homogeneous coordinates : example Does that give us a faster way to find matrices? E.g.: What is the matrix for rotation about the point (2, 2)? Rotation in general: cos φ sin φ? sin φ sin φ? rotation around (2,2):

39 Problem and solution: homogeneous coordinates : example Q: What is the matrix for rotation about the point (2, 2)?

40 Moving up a dimension Rotations in 3D Reflections in 3D For scaling, we have three scaling factors on the diagonal of the matrix. s x s y s z Shearing can be done in either x-, y-, or z-direction (or a combination thereof). For example, shearing in x-direction: 1 d y d z x x + d y y + d z z y = y z z For translations (and affine transformations in general), we use 4 4 matrices.

41 Moving up a dimension Rotations in 3D Reflections in 3D You see: transformations in 3D are very similar to those in 2D. Scaling and shearing are straightforward generalizations of the 2D cases. Reflection is done with respect to planes Rotation is done about directed lines.

42 Moving up a dimension Rotations in 3D Reflections in 3D : rotations Q: What is the matrix for a rotation of angle φ about the z-axis? Rotation in 2D (x y-plane): ( ) cos φ sin φ sin φ cos φ

43 Moving up a dimension Rotations in 3D Reflections in 3D : rotations Q: What is the matrix for a rotation of angle φ about the z-axis? Rotation in 2D (x y-plane): ( cos φ ) sin φ sin φ cos φ Rotation in 3D around z-axis: cos φ sin φ 0 sin φ cos φ

44 Moving up a dimension Rotations in 3D Reflections in 3D : rotations Q: What is the matrix for a rotation of angle φ about the z-axis? Q: What is the matrix for a rotation of angle φ about the vector (3, 0, 4)?

45 Moving up a dimension Rotations in 3D Reflections in 3D : rotations Q: What is the matrix for a rotation of angle φ about the z-axis? Q: What is the matrix for a rotation of angle φ about the vector (3, 0, 4)? Q: What is the matrix for a rotation of angle φ about the directed line (0, 1, 2) + t(3, 0, 4) t > 0?

46 Moving up a dimension Rotations in 3D Reflections in 3D : rotations We need a 3D transformation that rotates around an arbitrary vector w. How can we do that? Idea: 1 Rotate vector w to z-axis 2 Do 3D rotation around z-axis 3 Rotate everything back to original position

47 Moving up a dimension Rotations in 3D Reflections in 3D : rotations We already know how to rotate around the z-axis: cos φ sin φ 0 sin φ cos φ Note: Knowing that the inverse of an orthogonal matrix is always it s transposed saves you some calculation here.

48 Moving up a dimension Rotations in 3D Reflections in 3D : rotations Hmm, but we only have the vector w. How do we get a whole coordinates system u, v, w?

49 Moving up a dimension Rotations in 3D Reflections in 3D : rotations Q: Is such a rotation unique? Does it need to be?

50 Moving up a dimension Rotations in 3D Reflections in 3D : reflections Q: What is the matrix for reflection in XY -plane?

51 Moving up a dimension Rotations in 3D Reflections in 3D : reflections Q: What is the matrix for reflection in XY -plane?

52 Moving up a dimension Rotations in 3D Reflections in 3D : reflections Q: What is the matrix for reflection in XY -plane? Q: What is the matrix for reflection in the plane 3x + 4y 12z = 0?

53 Moving up a dimension Rotations in 3D Reflections in 3D : reflections Q: What is the matrix for reflection in XY -plane? Q: What is the matrix for reflection in the plane 3x + 4y 12z = 0? Q: What is the matrix for reflection in the plane 3x + 4y 12z = 11?

54 Moving up a dimension Rotations in 3D Reflections in 3D

55 Moving up a dimension Rotations in 3D Reflections in 3D Important dates Wednesday, Sept 23: Tutorials and programming labs, but no lecture Monday, Sept 28, 8:30-10:30h: Midterm exam and therefore Programming labs, but no lecture and tutorials Wednesday, Sept 30: Lecture and programming labs, but no tutorials Friday, Oct 2, 12h00: Deadline programming assignment P1

56 Moving up a dimension Rotations in 3D Reflections in 3D Midterm exam Monday, Sept 28, 8:30-10:30h, EDUC-ALFA Crosscheck time and location in OSIRIS Come in time Bring a pen (no pencil, no red pens), and your student ID Coverage: lecture 1-5, tutorials 1-3 If you followed the lecture,... read the textbook,... and actively did the exercises you should be fine

57 Moving up a dimension Rotations in 3D Reflections in 3D Midterm exam No books, notes, electronic tools, etc. allowed Note: that includes cellphones (even if you just want to use them as a watch!) Note on formulas: We expect that you know the important ones We expect that you have enough knowledge to judge what formulas are considered important for graphics A hint: scaler product, cross product, sin/cos are important and graphics programmers should know them out of their head Complex relationships and trigonometrical characteristics are also important but it s not required to know them out of your head (i.e. they will be provided or not be necessary to solve the exam questions)

58 Moving up a dimension Rotations in 3D Reflections in 3D Programming assignment P1 Deadline: Friday, Oct 2, 12h Online submission (see website) System closes later (13h), but don t rely on that Grading: Based on your delivery, but we will do crosschecks and draw random groups for a personal meeting

Homework 5: Transformations in geometry

Homework 5: Transformations in geometry Math 21b: Linear Algebra Spring 2018 Homework 5: Transformations in geometry This homework is due on Wednesday, February 7, respectively on Thursday February 8, 2018. 1 a) Find the reflection matrix at

More information

Specifying Complex Scenes

Specifying Complex Scenes Transformations Specifying Complex Scenes (x,y,z) (r x,r y,r z ) 2 (,,) Specifying Complex Scenes Absolute position is not very natural Need a way to describe relative relationship: The lego is on top

More information

Vector Algebra Transformations. Lecture 4

Vector Algebra Transformations. Lecture 4 Vector Algebra Transformations Lecture 4 Cornell CS4620 Fall 2008 Lecture 4 2008 Steve Marschner 1 Geometry A part of mathematics concerned with questions of size, shape, and relative positions of figures

More information

GEOMETRIC TRANSFORMATIONS AND VIEWING

GEOMETRIC TRANSFORMATIONS AND VIEWING GEOMETRIC TRANSFORMATIONS AND VIEWING 2D and 3D 1/44 2D TRANSFORMATIONS HOMOGENIZED Transformation Scaling Rotation Translation Matrix s x s y cosθ sinθ sinθ cosθ 1 dx 1 dy These 3 transformations are

More information

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

Lecture 4: Transforms. Computer Graphics CMU /15-662, Fall 2016 Lecture 4: Transforms Computer Graphics CMU 15-462/15-662, Fall 2016 Brief recap from last class How to draw a triangle - Why focus on triangles, and not quads, pentagons, etc? - What was specific to triangles

More information

Graphics 2009/2010, period 1. Lecture 6: perspective projection

Graphics 2009/2010, period 1. Lecture 6: perspective projection Graphics 2009/2010, period 1 Lecture 6 Perspective projection Orthographic vs. perspective projection Introduction Projecting from arbitrary camera positions Orthographic projection and the canonical view

More information

Graphics and Interaction Transformation geometry and homogeneous coordinates

Graphics and Interaction Transformation geometry and homogeneous coordinates 433-324 Graphics and Interaction Transformation geometry and homogeneous coordinates Department of Computer Science and Software Engineering The Lecture outline Introduction Vectors and matrices Translation

More information

COMP30019 Graphics and Interaction Transformation geometry and homogeneous coordinates

COMP30019 Graphics and Interaction Transformation geometry and homogeneous coordinates COMP30019 Graphics and Interaction Transformation geometry and homogeneous coordinates Department of Computer Science and Software Engineering The Lecture outline Introduction Vectors and matrices Translation

More information

CT5510: Computer Graphics. Transformation BOCHANG MOON

CT5510: Computer Graphics. Transformation BOCHANG MOON CT5510: Computer Graphics Transformation BOCHANG MOON 2D Translation Transformations such as rotation and scale can be represented using a matrix M.., How about translation? No way to express this using

More information

Computer Science 336 Fall 2017 Homework 2

Computer Science 336 Fall 2017 Homework 2 Computer Science 336 Fall 2017 Homework 2 Use the following notation as pseudocode for standard 3D affine transformation matrices. You can refer to these by the names below. There is no need to write out

More information

Answers to practice questions for Midterm 1

Answers to practice questions for Midterm 1 Answers to practice questions for Midterm Paul Hacking /5/9 (a The RREF (reduced row echelon form of the augmented matrix is So the system of linear equations has exactly one solution given by x =, y =,

More information

Homework 5: Transformations in geometry

Homework 5: Transformations in geometry Math b: Linear Algebra Spring 08 Homework 5: Transformations in geometry This homework is due on Wednesday, February 7, respectively on Thursday February 8, 08. a) Find the reflection matrix at the line

More information

Computer Graphics: Geometric Transformations

Computer Graphics: Geometric Transformations Computer Graphics: Geometric Transformations Geometric 2D transformations By: A. H. Abdul Hafez Abdul.hafez@hku.edu.tr, 1 Outlines 1. Basic 2D transformations 2. Matrix Representation of 2D transformations

More information

Transforms. COMP 575/770 Spring 2013

Transforms. COMP 575/770 Spring 2013 Transforms COMP 575/770 Spring 2013 Transforming Geometry Given any set of points S Could be a 2D shape, a 3D object A transform is a function T that modifies all points in S: T S S T v v S Different transforms

More information

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

Math background. 2D Geometric Transformations. Implicit representations. Explicit representations. Read: CS 4620 Lecture 6 Math background 2D Geometric Transformations CS 4620 Lecture 6 Read: Chapter 2: Miscellaneous Math Chapter 5: Linear Algebra Notation for sets, functions, mappings Linear transformations Matrices Matrix-vector

More information

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

3D Transformations. CS 4620 Lecture Kavita Bala w/ prior instructor Steve Marschner. Cornell CS4620 Fall 2015 Lecture 11 3D Transformations CS 4620 Lecture 11 1 Announcements A2 due tomorrow Demos on Monday Please sign up for a slot Post on piazza 2 Translation 3 Scaling 4 Rotation about z axis 5 Rotation about x axis 6

More information

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

Today. Today. Introduction. Matrices. Matrices. Computergrafik. Transformations & matrices Introduction Matrices Computergrafik Matthias Zwicker Universität Bern Herbst 2008 Today Transformations & matrices Introduction Matrices Homogeneous Affine transformations Concatenating transformations Change of Common coordinate

More information

AH Matrices.notebook November 28, 2016

AH Matrices.notebook November 28, 2016 Matrices Numbers are put into arrays to help with multiplication, division etc. A Matrix (matrices pl.) is a rectangular array of numbers arranged in rows and columns. Matrices If there are m rows and

More information

2D and 3D Transformations AUI Course Denbigh Starkey

2D and 3D Transformations AUI Course Denbigh Starkey 2D and 3D Transformations AUI Course Denbigh Starkey. Introduction 2 2. 2D transformations using Cartesian coordinates 3 2. Translation 3 2.2 Rotation 4 2.3 Scaling 6 3. Introduction to homogeneous coordinates

More information

Geometric Transformations

Geometric Transformations Geometric Transformations CS 4620 Lecture 9 2017 Steve Marschner 1 A little quick math background Notation for sets, functions, mappings Linear and affine transformations Matrices Matrix-vector multiplication

More information

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

3D Transformations. CS 4620 Lecture 10. Cornell CS4620 Fall 2014 Lecture Steve Marschner (with previous instructors James/Bala) 3D Transformations CS 4620 Lecture 10 1 Translation 2 Scaling 3 Rotation about z axis 4 Rotation about x axis 5 Rotation about y axis 6 Properties of Matrices Translations: linear part is the identity

More information

Midterm Exam Fundamentals of Computer Graphics (COMP 557) Thurs. Feb. 19, 2015 Professor Michael Langer

Midterm Exam Fundamentals of Computer Graphics (COMP 557) Thurs. Feb. 19, 2015 Professor Michael Langer Midterm Exam Fundamentals of Computer Graphics (COMP 557) Thurs. Feb. 19, 2015 Professor Michael Langer The exam consists of 10 questions. There are 2 points per question for a total of 20 points. You

More information

Computer Graphics with OpenGL ES (J. Han) Chapter IV Spaces and Transforms

Computer Graphics with OpenGL ES (J. Han) Chapter IV Spaces and Transforms Chapter IV Spaces and Transforms Scaling 2D scaling with the scaling factors, s x and s y, which are independent. Examples When a polygon is scaled, all of its vertices are processed by the same scaling

More information

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

2D transformations: An introduction to the maths behind computer graphics 2D transformations: An introduction to the maths behind computer graphics Lecturer: Dr Dan Cornford d.cornford@aston.ac.uk http://wiki.aston.ac.uk/dancornford CS2150, Computer Graphics, Aston University,

More information

Computer Graphics Hands-on

Computer Graphics Hands-on Computer Graphics Hands-on Two-Dimensional Transformations Objectives Visualize the fundamental 2D geometric operations translation, rotation about the origin, and scale about the origin Experimentally

More information

Chapter 2 - Basic Mathematics for 3D Computer Graphics

Chapter 2 - Basic Mathematics for 3D Computer Graphics Chapter 2 - Basic Mathematics for 3D Computer Graphics Three-Dimensional Geometric Transformations Affine Transformations and Homogeneous Coordinates Combining Transformations Translation t + t Add a vector

More information

Lecture 5 2D Transformation

Lecture 5 2D Transformation Lecture 5 2D Transformation What is a transformation? In computer graphics an object can be transformed according to position, orientation and size. Exactly what it says - an operation that transforms

More information

XPM 2D Transformations Week 2, Lecture 3

XPM 2D Transformations Week 2, Lecture 3 CS 430/585 Computer Graphics I XPM 2D Transformations Week 2, Lecture 3 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory Department of Computer Science Drexel

More information

Linear and Affine Transformations Coordinate Systems

Linear and Affine Transformations Coordinate Systems Linear and Affine Transformations Coordinate Systems Recall A transformation T is linear if Recall A transformation T is linear if Every linear transformation can be represented as matrix Linear Transformation

More information

Transforms 1 Christian Miller CS Fall 2011

Transforms 1 Christian Miller CS Fall 2011 Transforms 1 Christian Miller CS 354 - Fall 2011 Transformations What happens if you multiply a square matrix and a vector together? You get a different vector with the same number of coordinates These

More information

Image warping , , Computational Photography Fall 2017, Lecture 10

Image warping , , Computational Photography Fall 2017, Lecture 10 Image warping http://graphics.cs.cmu.edu/courses/15-463 15-463, 15-663, 15-862 Computational Photography Fall 2017, Lecture 10 Course announcements Second make-up lecture on Friday, October 6 th, noon-1:30

More information

2D/3D Geometric Transformations and Scene Graphs

2D/3D Geometric Transformations and Scene Graphs 2D/3D Geometric Transformations and Scene Graphs Week 4 Acknowledgement: The course slides are adapted from the slides prepared by Steve Marschner of Cornell University 1 A little quick math background

More information

XPM 2D Transformations Week 2, Lecture 3

XPM 2D Transformations Week 2, Lecture 3 CS 430/585 Computer Graphics I XPM 2D Transformations Week 2, Lecture 3 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory Department of Computer Science Drexel

More information

Geometric transformations in 3D and coordinate frames. Computer Graphics CSE 167 Lecture 3

Geometric transformations in 3D and coordinate frames. Computer Graphics CSE 167 Lecture 3 Geometric transformations in 3D and coordinate frames Computer Graphics CSE 167 Lecture 3 CSE 167: Computer Graphics 3D points as vectors Geometric transformations in 3D Coordinate frames CSE 167, Winter

More information

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

CS4620/5620. Professor: Kavita Bala. Cornell CS4620/5620 Fall 2012 Lecture Kavita Bala 1 (with previous instructors James/Marschner) CS4620/5620 Affine and 3D Transformations Professor: Kavita Bala 1 Announcements Updated schedule on course web page 2 Prelim days finalized and posted Oct 11, Nov 29 No final exam, final project will

More information

COMP30019 Graphics and Interaction Three-dimensional transformation geometry and perspective

COMP30019 Graphics and Interaction Three-dimensional transformation geometry and perspective COMP30019 Graphics and Interaction Three-dimensional transformation geometry and perspective Department of Computing and Information Systems The Lecture outline Introduction Rotation about artibrary axis

More information

2D Transformations Introduction to Computer Graphics Arizona State University

2D Transformations Introduction to Computer Graphics Arizona State University 2D Transformations Introduction to Computer Graphics Arizona State University Gerald Farin January 31, 2006 1 Introduction When you see computer graphics images moving, spinning, or changing shape, you

More information

521493S Computer Graphics Exercise 2 Solution (Chapters 4-5)

521493S Computer Graphics Exercise 2 Solution (Chapters 4-5) 5493S Computer Graphics Exercise Solution (Chapters 4-5). Given two nonparallel, three-dimensional vectors u and v, how can we form an orthogonal coordinate system in which u is one of the basis vectors?

More information

Computer Graphics Geometric Transformations

Computer Graphics Geometric Transformations Computer Graphics 2016 6. Geometric Transformations Hongxin Zhang State Key Lab of CAD&CG, Zhejiang University 2016-10-31 Contents Transformations Homogeneous Co-ordinates Matrix Representations of Transformations

More information

Coordinate transformations. 5554: Packet 8 1

Coordinate transformations. 5554: Packet 8 1 Coordinate transformations 5554: Packet 8 1 Overview Rigid transformations are the simplest Translation, rotation Preserve sizes and angles Affine transformation is the most general linear case Homogeneous

More information

3D Geometry and Camera Calibration

3D Geometry and Camera Calibration 3D Geometry and Camera Calibration 3D Coordinate Systems Right-handed vs. left-handed x x y z z y 2D Coordinate Systems 3D Geometry Basics y axis up vs. y axis down Origin at center vs. corner Will often

More information

2D Image Transforms Computer Vision (Kris Kitani) Carnegie Mellon University

2D Image Transforms Computer Vision (Kris Kitani) Carnegie Mellon University 2D Image Transforms 16-385 Computer Vision (Kris Kitani) Carnegie Mellon University Extract features from an image what do we do next? Feature matching (object recognition, 3D reconstruction, augmented

More information

(Refer Slide Time: 00:04:20)

(Refer Slide Time: 00:04:20) Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 8 Three Dimensional Graphics Welcome back all of you to the lectures in Computer

More information

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

Last week. Machiraju/Zhang/Möller/Fuhrmann Last week Machiraju/Zhang/Möller/Fuhrmann 1 Geometry basics Scalar, point, and vector Vector space and affine space Basic point and vector operations Sided-ness test Lines, planes, and triangles Linear

More information

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

Transformations. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico Transformations Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico Angel: Interactive Computer Graphics 4E Addison-Wesley 25 1 Objectives

More information

Matrices. Chapter Matrix A Mathematical Definition Matrix Dimensions and Notation

Matrices. Chapter Matrix A Mathematical Definition Matrix Dimensions and Notation Chapter 7 Introduction to Matrices This chapter introduces the theory and application of matrices. It is divided into two main sections. Section 7.1 discusses some of the basic properties and operations

More information

Early Fundamentals of Coordinate Changes and Rotation Matrices for 3D Computer Vision

Early Fundamentals of Coordinate Changes and Rotation Matrices for 3D Computer Vision Early Fundamentals of Coordinate Changes and Rotation Matrices for 3D Computer Vision Ricardo Fabbri Benjamin B. Kimia Brown University, Division of Engineering, Providence RI 02912, USA Based the first

More information

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

Computer Graphics. Chapter 5 Geometric Transformations. Somsak Walairacht, Computer Engineering, KMITL Chapter 5 Geometric Transformations Somsak Walairacht, Computer Engineering, KMITL 1 Outline Basic Two-Dimensional Geometric Transformations Matrix Representations and Homogeneous Coordinates Inverse Transformations

More information

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

Geometric transformations assign a point to a point, so it is a point valued function of points. Geometric transformation may destroy the equation Geometric transformations assign a point to a point, so it is a point valued function of points. Geometric transformation may destroy the equation and the type of an object. Even simple scaling turns a

More information

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

3D Mathematics. Co-ordinate systems, 3D primitives and affine transformations 3D Mathematics Co-ordinate systems, 3D primitives and affine transformations Coordinate Systems 2 3 Primitive Types and Topologies Primitives Primitive Types and Topologies 4 A primitive is the most basic

More information

CSE 167: Introduction to Computer Graphics Lecture #2: Coordinate Transformations

CSE 167: Introduction to Computer Graphics Lecture #2: Coordinate Transformations CSE 167: Introduction to Computer Graphics Lecture #2: Coordinate Transformations Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013 Announcements Homework #1 due Friday Oct

More information

Midterm Exam! CS 184: Foundations of Computer Graphics! page 1 of 13!

Midterm Exam! CS 184: Foundations of Computer Graphics! page 1 of 13! Midterm Exam! CS 184: Foundations of Computer Graphics! page 1 of 13! Student Name:!! Class Account Username:! Instructions: Read them carefully!! The exam begins at 1:10pm and ends at 2:30pm. You must

More information

CS559: Computer Graphics

CS559: Computer Graphics CS559: Computer Graphics Lecture 8: 3D Transforms Li Zhang Spring 28 Most Slides from Stephen Chenne Finish Color space Toda 3D Transforms and Coordinate sstem Reading: Shirle ch 6 RGB and HSV Green(,,)

More information

Monday, 12 November 12. Matrices

Monday, 12 November 12. Matrices Matrices Matrices Matrices are convenient way of storing multiple quantities or functions They are stored in a table like structure where each element will contain a numeric value that can be the result

More information

On Your Own. ). Another way is to multiply the. ), and the image. Applications. Unit 3 _ _

On Your Own. ). Another way is to multiply the. ), and the image. Applications. Unit 3 _ _ Applications 1 a 90 clockwise rotation matrix: - b As can be seen by the diagram, the image of P is Q and the image of R is P The coordinate of Q can be found by symmetry y R 1 P, Thus, the 45 clockwise

More information

Homework #1. Displays, Alpha Compositing, Image Processing, Affine Transformations, Hierarchical Modeling

Homework #1. Displays, Alpha Compositing, Image Processing, Affine Transformations, Hierarchical Modeling Computer Graphics Instructor: Brian Curless CSE 457 Spring 2014 Homework #1 Displays, Alpha Compositing, Image Processing, Affine Transformations, Hierarchical Modeling Assigned: Saturday, April th Due:

More information

Graphics Pipeline 2D Geometric Transformations

Graphics Pipeline 2D Geometric Transformations Graphics Pipeline 2D Geometric Transformations CS 4620 Lecture 8 1 Plane projection in drawing Albrecht Dürer 2 Plane projection in drawing source unknown 3 Rasterizing triangles Summary 1 evaluation of

More information

UNIT 2 2D TRANSFORMATIONS

UNIT 2 2D TRANSFORMATIONS UNIT 2 2D TRANSFORMATIONS Introduction With the procedures for displaying output primitives and their attributes, we can create variety of pictures and graphs. In many applications, there is also a need

More information

Exercises for Chapter Three You know you've got to exercise your brain just like your muscles. Will Rogers ( )

Exercises for Chapter Three You know you've got to exercise your brain just like your muscles. Will Rogers ( ) Exercises for Chapter Three You know you've got to exercise your brain just like your muscles. Will Rogers (1879 1935) Investigation Exercise 3.1. (a) Construct a tessellation. (Directions for construction.)

More information

Rotations (and other transformations) Rotation as rotation matrix. Storage. Apply to vector matrix vector multiply (15 flops)

Rotations (and other transformations) Rotation as rotation matrix. Storage. Apply to vector matrix vector multiply (15 flops) Cornell University CS 569: Interactive Computer Graphics Rotations (and other transformations) Lecture 4 2008 Steve Marschner 1 Rotation as rotation matrix 9 floats orthogonal and unit length columns and

More information

Camera Model and Calibration

Camera Model and Calibration Camera Model and Calibration Lecture-10 Camera Calibration Determine extrinsic and intrinsic parameters of camera Extrinsic 3D location and orientation of camera Intrinsic Focal length The size of the

More information

Coordinate Frames and Transforms

Coordinate Frames and Transforms Coordinate Frames and Transforms 1 Specifiying Position and Orientation We need to describe in a compact way the position of the robot. In 2 dimensions (planar mobile robot), there are 3 degrees of freedom

More information

Quaternions and Dual Coupled Orthogonal Rotations in Four-Space

Quaternions and Dual Coupled Orthogonal Rotations in Four-Space Quaternions and Dual Coupled Orthogonal Rotations in Four-Space Kurt Nalty January 8, 204 Abstract Quaternion multiplication causes tensor stretching) and versor turning) operations. Multiplying by unit

More information

Matrix Inverse 2 ( 2) 1 = 2 1 2

Matrix Inverse 2 ( 2) 1 = 2 1 2 Name: Matrix Inverse For Scalars, we have what is called a multiplicative identity. This means that if we have a scalar number, call it r, then r multiplied by the multiplicative identity equals r. Without

More information

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

UNIT 2. Translation/ Scaling/ Rotation. Unit-02/Lecture-01 UNIT 2 Translation/ Scaling/ Rotation Unit-02/Lecture-01 Translation- (RGPV-2009,10,11,13,14) Translation is to move, or parallel shift, a figure. We use a simple point as a starting point. This is a simple

More information

MATRIX REVIEW PROBLEMS: Our matrix test will be on Friday May 23rd. Here are some problems to help you review.

MATRIX REVIEW PROBLEMS: Our matrix test will be on Friday May 23rd. Here are some problems to help you review. MATRIX REVIEW PROBLEMS: Our matrix test will be on Friday May 23rd. Here are some problems to help you review. 1. The intersection of two non-parallel planes is a line. Find the equation of the line. Give

More information

Interactive Computer Graphics. Hearn & Baker, chapter D transforms Hearn & Baker, chapter 5. Aliasing and Anti-Aliasing

Interactive Computer Graphics. Hearn & Baker, chapter D transforms Hearn & Baker, chapter 5. Aliasing and Anti-Aliasing Interactive Computer Graphics Aliasing and Anti-Aliasing Hearn & Baker, chapter 4-7 D transforms Hearn & Baker, chapter 5 Aliasing and Anti-Aliasing Problem: jaggies Also known as aliasing. It results

More information

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

Lecture 6 Sections 4.3, 4.6, 4.7. Wed, Sep 9, 2009 Lecture 6 Sections 4.3, 4.6, 4.7 Hampden-Sydney College Wed, Sep 9, 2009 Outline 1 2 3 4 re are three mutually orthogonal axes: the x-axis, the y-axis, and the z-axis. In the standard viewing position,

More information

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

Answers. Chapter 2. 1) Give the coordinates of the following points: Answers Chapter 2 1) Give the coordinates of the following points: a (-2.5, 3) b (1, 2) c (2.5, 2) d (-1, 1) e (0, 0) f (2, -0.5) g (-0.5, -1.5) h (0, -2) j (-3, -2) 1 2) List the 48 different possible

More information

2D Object Definition (1/3)

2D Object Definition (1/3) 2D Object Definition (1/3) Lines and Polylines Lines drawn between ordered points to create more complex forms called polylines Same first and last point make closed polyline or polygon Can intersect itself

More information

Computer Graphics Hands-on

Computer Graphics Hands-on Computer Graphics Hands-on Two-Dimensional Transformations Objectives Visualize the fundamental 2D geometric operations translation, rotation about the origin, and scale about the origin Learn how to compose

More information

Midterm Exam! CS 184: Foundations of Computer Graphics! page 1 of 14!

Midterm Exam! CS 184: Foundations of Computer Graphics! page 1 of 14! Midterm Exam! CS 184: Foundations of Computer Graphics! page 1 of 14! Student Name:!! Class Account Username:! Instructions: Read them carefully!! The exam begins at 2:40pm and ends at 4:00pm. You must

More information

Section III: TRANSFORMATIONS

Section III: TRANSFORMATIONS Section III: TRANSFORMATIONS in 2-D 2D TRANSFORMATIONS AND MATRICES Representation of Points: 2 x 1 matrix: X Y General Problem: [B] = [T] [A] [T] represents a generic operator to be applied to the points

More information

Transformations Week 9, Lecture 18

Transformations Week 9, Lecture 18 CS 536 Computer Graphics Transformations Week 9, Lecture 18 2D Transformations David Breen, William Regli and Maxim Peysakhov Department of Computer Science Drexel University 1 3 2D Affine Transformations

More information

Exercise Max. Points Total 90

Exercise Max. Points Total 90 University of California San Diego Department of Computer Science CSE167: Introduction to Computer Graphics Fall Quarter 2014 Midterm Examination #1 Thursday, October 30 th, 2014 Instructor: Dr. Jürgen

More information

Lecture 5: Transforms II. Computer Graphics and Imaging UC Berkeley CS184/284A

Lecture 5: Transforms II. Computer Graphics and Imaging UC Berkeley CS184/284A Lecture 5: Transforms II Computer Graphics and Imaging UC Berkeley 3D Transforms 3D Transformations Use homogeneous coordinates again: 3D point = (x, y, z, 1) T 3D vector = (x, y, z, 0) T Use 4 4 matrices

More information

2D Geometric Transformations and Matrices

2D Geometric Transformations and Matrices Background: Objects are drawn and moved in 2D space and 3D space on a computer screen b multipling matrices. Generall speaking, computer animation is achieved as follows b repeating steps 1, 2, and 3 below.

More information

2D TRANSFORMATIONS AND MATRICES

2D TRANSFORMATIONS AND MATRICES 2D TRANSFORMATIONS AND MATRICES Representation of Points: 2 x 1 matrix: x y General Problem: B = T A T represents a generic operator to be applied to the points in A. T is the geometric transformation

More information

CMSC 425: Lecture 6 Affine Transformations and Rotations

CMSC 425: Lecture 6 Affine Transformations and Rotations CMSC 45: Lecture 6 Affine Transformations and Rotations Affine Transformations: So far we have been stepping through the basic elements of geometric programming. We have discussed points, vectors, and

More information

Chapter 3 - Basic Mathematics for 3D Computer Graphics

Chapter 3 - Basic Mathematics for 3D Computer Graphics Chapter 3 - Basic Mathematics for 3D Computer Graphics Three-Dimensional Geometric Transformations Affine Transformations and Homogeneous Coordinates OpenGL Matrix Logic Translation Add a vector t Geometrical

More information

CS 4620 Midterm, October 23, 2018 SOLUTION

CS 4620 Midterm, October 23, 2018 SOLUTION 1. [20 points] Transformations CS 4620 Midterm, October 23, 2018 SOLUTION (a) Describe the action of each of the following matrices, as transformations in homogeneous coordinates, in terms of rotation,

More information

Advanced Computer Graphics Transformations. Matthias Teschner

Advanced Computer Graphics Transformations. Matthias Teschner Advanced Computer Graphics Transformations Matthias Teschner Motivation Transformations are used To convert between arbitrary spaces, e.g. world space and other spaces, such as object space, camera space

More information

CS4670: Computer Vision

CS4670: Computer Vision CS467: Computer Vision Noah Snavely Lecture 8: Geometric transformations Szeliski: Chapter 3.6 Reading Announcements Project 2 out today, due Oct. 4 (demo at end of class today) Image alignment Why don

More information

Game Engineering: 2D

Game Engineering: 2D Game Engineering: 2D CS420-2010F-07 Objects in 2D David Galles Department of Computer Science University of San Francisco 07-0: Representing Polygons We want to represent a simple polygon Triangle, rectangle,

More information

Game Engineering CS S-05 Linear Transforms

Game Engineering CS S-05 Linear Transforms Game Engineering CS420-2016S-05 Linear Transforms David Galles Department of Computer Science University of San Francisco 05-0: Matrices as Transforms Recall that Matrices are transforms Transform vectors

More information

Vector Calculus: Understanding the Cross Product

Vector Calculus: Understanding the Cross Product University of Babylon College of Engineering Mechanical Engineering Dept. Subject : Mathematics III Class : 2 nd year - first semester Date: / 10 / 2016 2016 \ 2017 Vector Calculus: Understanding the Cross

More information

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

Hello, welcome to the video lecture series on Digital Image Processing. So in today's lecture Digital Image Processing Prof. P. K. Biswas Department of Electronics and Electrical Communications Engineering Indian Institute of Technology, Kharagpur Module 02 Lecture Number 10 Basic Transform (Refer

More information

Visualizing Quaternions

Visualizing Quaternions Visualizing Quaternions Andrew J. Hanson Computer Science Department Indiana University Siggraph 1 Tutorial 1 GRAND PLAN I: Fundamentals of Quaternions II: Visualizing Quaternion Geometry III: Quaternion

More information

CS231A Midterm Review. Friday 5/6/2016

CS231A Midterm Review. Friday 5/6/2016 CS231A Midterm Review Friday 5/6/2016 Outline General Logistics Camera Models Non-perspective cameras Calibration Single View Metrology Epipolar Geometry Structure from Motion Active Stereo and Volumetric

More information

CSC 418/2504 Computer Graphics, Winter 2012 Assignment 1 (10% of course grade)

CSC 418/2504 Computer Graphics, Winter 2012 Assignment 1 (10% of course grade) CSC 418/2504 Computer Graphics, Winter 2012 Assignment 1 (10% of course grade) Part A [50 marks in total] Due 11:59pm onwed., Feb. 8, 2012. Below are 4 exercises covering di erent topics from the first

More information

IntroductionToRobotics-Lecture02

IntroductionToRobotics-Lecture02 IntroductionToRobotics-Lecture02 Instructor (Oussama Khatib):Okay. Let's get started. So as always, the lecture starts with a video segment, and today's video segment comes from 1991, and from the group

More information

Computer Graphics 7: Viewing in 3-D

Computer Graphics 7: Viewing in 3-D Computer Graphics 7: Viewing in 3-D In today s lecture we are going to have a look at: Transformations in 3-D How do transformations in 3-D work? Contents 3-D homogeneous coordinates and matrix based transformations

More information

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

Linear algebra deals with matrixes: two-dimensional arrays of values. Here s a matrix: [ x + 5y + 7z 9x + 3y + 11z Basic Linear Algebra Linear algebra deals with matrixes: two-dimensional arrays of values. Here s a matrix: [ 1 5 ] 7 9 3 11 Often matrices are used to describe in a simpler way a series of linear equations.

More information

Calculus III. Math 233 Spring In-term exam April 11th. Suggested solutions

Calculus III. Math 233 Spring In-term exam April 11th. Suggested solutions Calculus III Math Spring 7 In-term exam April th. Suggested solutions This exam contains sixteen problems numbered through 6. Problems 5 are multiple choice problems, which each count 5% of your total

More information

ME/CS 133(a): Final Exam (Fall Quarter 2017/2018)

ME/CS 133(a): Final Exam (Fall Quarter 2017/2018) ME/CS 133(a): Final Exam (Fall Quarter 2017/2018) Instructions 1. Limit your total time to 5 hours. You can take a break in the middle of the exam if you need to ask a question, or go to dinner, etc. That

More information

Institutionen för systemteknik

Institutionen för systemteknik Code: Day: Lokal: M7002E 19 March E1026 Institutionen för systemteknik Examination in: M7002E, Computer Graphics and Virtual Environments Number of sections: 7 Max. score: 100 (normally 60 is required

More information

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

CSE328 Fundamentals of Computer Graphics: Theory, Algorithms, and Applications CSE328 Fundamentals of Computer Graphics: Theor, Algorithms, and Applications Hong in State Universit of New York at Ston Brook (Ston Brook Universit) Ston Brook, New York 794-44 Tel: (63)632-845; Fa:

More information

Transformations. Questions on Assignment 1? Announcements

Transformations. Questions on Assignment 1? Announcements 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

More information

CS 4620 Midterm 1. Tuesday 22 October minutes

CS 4620 Midterm 1. Tuesday 22 October minutes CS 4620 Midterm 1 Tuesday 22 October 2013 90 minutes Problem 1: Transformations (20 pts) Consider the affine transformation on R 3 defined in homogeneous coordinates by the matrix: 1 M = 1 0 0 2 0 1 0

More information

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

Today. Parity. General Polygons? Non-Zero Winding Rule. Winding Numbers. CS559 Lecture 11 Polygons, Transformations CS559 Lecture Polygons, Transformations These are course notes (not used as slides) Written by Mike Gleicher, Oct. 005 With some slides adapted from the notes of Stephen Chenney Final version (after class)

More information