©College of Computer and Information Science, Northeastern UniversityFebruary 21, CS U540 Computer Graphics Prof. Harriet Fell Spring 2009 Lecture 19 – February 12, 2009
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Vectors A vector describes a length and a direction. a b a = b a zero length vector 1 a unit vector
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Vector Operations a a b b b+a -d c-d Vector Sum a -a c Vector Difference d
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Cartesian Coordinates Any two non-zero, non-parallel 2D vectors form a 2D basis. Any 2D vector can be written uniquely as a linear combination of two 2D basis vectors. x and y (or i and j) denote unit vectors parallel to the x-axis and y-axis. x and y form an orthonormal 2D basis. a = x a x + y a y a =( x a, y a ) or x, y and z form an orthonormal 3D basis. or a =(a x,a y )
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Vector Length Vector a =( x a, y a ) yaya xaxa ||a|| a
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Dot Product a =( x a, y a ) b =( x b, y b ) a b = x a x b + y a y b a b = a b cos( ) a b x a = a cos( + ) x b = b cos( ) x a = a sin( + ) x b = b sin( )
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Projection a =( x a, y a ) b =( x b, y b ) a b = a b cos( ) The length of the projection of a onto b is given by a b abab
©College of Computer and Information Science, Northeastern UniversityFebruary 21, D Vectors This all holds for 3D vectors too. a =( x a, y a, z a ) b =( x b, y b, z b ) a b = x a x b + y a y b + z a z b a b = a b cos ( )
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Vector Cross Product axb a b axb is perpendicular to a and b. Use the right hand rule to determine the direction of axb. Image from
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Cross Product and Area axb a b a b ||a|| ||a||x||b|| = area pf the parallelogram.
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Computing the Cross Product
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Linear Interpolation LERP: /lerp/, vi.,n. –Quasi-acronym for Linear Interpolation, used as a verb or noun for the operation. “Bresenham's algorithm lerps incrementally between the two endpoints of the line.” p = (1 – t) a + t b = a + t(b – a) a b L tL (1-t)L
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Lerp Demo b a L p = (1 – t) a + t b = a + t(b – a) t =.5 t = 1 t =.25 t =.75 t = 0
©College of Computer and Information Science, Northeastern UniversityFebruary 21, If (x, y) is on the edge ab, (x, y) = (1 – t) a + t b = a + t(b – a). Similar formulas hold for points on the other edges. If (x, y) is in the triangle: (x, y) = a + b + c + + = 1 ( , , ) are the Barycentric coordinates of (x, y). Triangles a b c (x,y)
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Triangles a b c b-a c-a p = a + (b-a) + (c-a) = 0 = 1 = 2 = -1 = 0 = 1 = 2 = -1 Barycentric coordinates = 1- - p = p( , , ) = a + b + c = 0 p = (1- - )a + b + c = 1
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Computing Barycentric Coordinates a b c (x,y)
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Barycentric Coordinates as Areas a b c (x,y) where A is the area of the triangle. + + = 1
©College of Computer and Information Science, Northeastern UniversityFebruary 21, D Triangles b c (x,y,z) where A is the area of the triangle. + + = 1 This all still works in 3D. But how do we find the areas of the triangles? a
©College of Computer and Information Science, Northeastern UniversityFebruary 21, D Triangles - Areas axb a b C B A
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Triangle Assignment
©College of Computer and Information Science, Northeastern UniversityFebruary 21, Portable Pixmap Format (ppm) A "magic number" for identifying the file type. A ppm file's magic number is the two characters "P3". Whitespace (blanks, TABs, CRs, LFs). A width, formatted as ASCII characters in decimal. Whitespace. A height, again in ASCII decimal. Whitespace. The maximum color value again in ASCII decimal. Whitespace. Width * height pixels, each 3 values between 0 and maximum value. –start at top-left corner; proceed in normal English reading order –three values for each pixel for red, green, and blue, resp. –0 means color is off; maximum value means color is maxxed out –characters from "#" to end-of-line are ignored (comments) –no line should be longer than 70 characters
©College of Computer and Information Science, Northeastern UniversityFebruary 21, ppm Example P3 # feep.ppm
©College of Computer and Information Science, Northeastern UniversityFebruary 21, private void saveImage() { String outFileName = “my.ppm"; File outFile = new File(outFileName); int clrR, clrG, clrB; try { PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(outFile))); out.println("P3"); out.print(Integer.toString(xmax-xmin+1)); System.out.println(xmax-xmin+1); out.print(" "); out.println(Integer.toString(ymax-ymin+1)); System.out.println(ymax-ymin+1); out.println("255"); for (int y = ymin; y <= ymax; y++){ for (int x = xmin; x <= xmax; x++) { // compute clrR, clrG, clrB out.print(" "); out.print(clrR); out.print(" "); out.print(clrG); out.print(" "); out.println(clrB); } out.close(); } catch (IOException e) { System.out.println(e.toString()); }