Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SER332 Lecture 13

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

SER332 Lecture 13

Introduction to Graphics and Game Development
Linear Algebra
(201804)

Avatar for Javier Gonzalez-Sanchez

Javier Gonzalez-Sanchez PRO

February 27, 2018
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs SER332 Introduction to Graphics and Game Development Lecture 13:

    Linear Algebra Javier Gonzalez-Sanchez [email protected] PERALTA 230U Office Hours: By appointment
  2. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 1 jgs

    Announcement § Project 2 is Posted Due by March 21, 11:59PM
  3. jgs Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 6

    Points Specify locations in space (or in the plane) Points and Vectors Vector have a magnitude and direction (4,2) (1,3) v ⍬
  4. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 7 jgs

    Vectors § Vector v = (v1 , v2 ) § Magnitude or Length ||v|| = sqrt( v1 2 + v2 2) § Orientation (angle) ⍬ = tan -1 ( v2 / v1 ) § Unit vector ||v|| = 1 § Zero vector v = (0,0)
  5. jgs Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 8

    u - v = (u1 ,u2 ) - (v1 ,v2 ) = (u1 -v1 , u2 -v2 ) u + v = (u1 ,u2 ) + (v1 ,v2 ) = (u1 +v1 , u2 +v2 ) Addition and Subtraction v u u+v v u v-u
  6. jgs Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 9

    a * v = a * (v1 ,v2 ) = (a*v1 , a*v2 ) Multiplication with a Scalar v av
  7. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 10 jgs

    Test yourself § Point + Vector = ? § Point – Point = ? § Vector + Vector = ? § Point + Point = ?
  8. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 11 jgs

    Test yourself § Point + Vector = Point § Point – Point = Vector § Vector + Vector = Vector § Point + Point = ? v u u-v v u v-u
  9. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 13 jgs

    Uses // mouse motion callback function void motion(int x, int y) { if (mouse_button == GLUT_LEFT_BUTTON) { y_angle += (float(x - mouse_x) / width) *360.0; x_angle += (float(y - mouse_y) / height)*360.0; } if (mouse_button == GLUT_RIGHT_BUTTON) { scale += (y - mouse_y) / 100.0; if (scale < 0.1) scale = 0.1; if (scale > 7) scale = 7; } mouse_x = x; mouse_y = y; glutPostRedisplay(); }
  10. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 15 jgs

    § The dot product or inner product measures to what degree two vectors are aligned u · v = (u1 ,u2 ) · (v1 ,v2 ) = u1 * v1 + u2 * v2 v * u = (5*7) + (5*3) = 50 v * w = (5*5) + (5*0) = 25 u * w = (7*5) + (3*0) = 35 u * u = (7*7) + (3*3) = 58 t * w = (0*5) + (5*0) = 0 Dot Product q v=[5,5] u=[7,3] w=[5,0] t=[0,5]
  11. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 16 jgs

    § Two vectors v and w are perpendicular or normal iff u · v = 0 § Geometric Interpretation: § cos(a) = l / ||w|| = u · v / ||v|| * ||w|| Dot Product w v a l
  12. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 17 jgs

    v * u = (5*7) + (5*3) = 50 v * w = (5*5) + (5*0) = 25 u * w = (7*5) + (3*0) = 35 u * u = (7*7) + (3*3) = 58 t * w = (0*5) + (5*0) = 0 |t| = 5.0 |v| = 7.07 |u| = 7.61 |w| = 5.0 § cos(a) = u · v / ||v|| * ||w|| q = cos-1 (25 / 7.07 * 5.0) = 45º Dot Product q v=[5,5] u=[7,3] w=[5,0] t=[0,5]
  13. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 18 jgs

    Dot Product ||v|| = sqrt (v · v) = sqrt (v1 * v1 + v2 * v2 )
  14. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 19 jgs

    Dot Product | Uses § Calculate the angle between 2 vectors
  15. jgs Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 21

    • Notation: u = v x w • The cross product is a vector • ||u|| proportional to the sine of the angle between v and w ||u|| = ||v||*||w||*sin(a) • u is perpendicular to v and w • The direction of u follows the right hand rule Cross Product w v a u
  16. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 22 jgs

    Cross Product u = v x w = ! " ! # ! $ x % " % # % $ = & ' ( ! " ! # ! $ % " % # % $ = ! # ∗ % $ − % # ∗ ! $ ! $ ∗ % " − % $ ∗ ! " ! " ∗ % # − % " ∗ ! #
  17. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 23 jgs

    Cross Product | Uses § Calculate the area of a triangle § Calculate distance from a line to a dot § Calculate normals
  18. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 24 jgs

    Cross Product | Triangle Area § The cross product is related to the area of a triangle § (parallelogram)area = ||u|| = ||v x w|| = ||v||*||w||*sin(a) § (triangle)area = ||u|| / 2 = ||v x w|| / 2 = ... Q R P w v
  19. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 25 jgs

    Test Yourself Given a Triangle with P=(0,0,0), Q=(0,3,0) and R=(3,3,0) What is the area? Q R P
  20. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 26 jgs

    Test Yourself § area (triangle) = (0,3,0) x (3,3,0) = ||(0,0,-9)|| / 2 = 9/2 = 4.5 § area (parallelogram) = 9 § area (parallelogram) = (3)(4.24) sin (45) = (3)(4.24...)(0.70...) = 9 Q R P
  21. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 27 jgs

    Cross Product | Distance point to line // compute the distance from AB to C double lineToPointDistance2D (double[] pA, double[] pB, double[] pC) { double dist = cross(pA-pB, pA-pC) / (pA - pB); return Math.abs(dist); } pA pC pB
  22. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 28 jgs

    Cross Product | Distance point to line
  23. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 29 jgs

    Cross Product | Normal calculation (lighting)
  24. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 31 jgs

    Matrix § A matrix is a set of elements, organized into rows and columns § addition: ! " # $ + & ' ( ℎ = ! + & " + ' # + ( $ + ℎ § subtraction: ! " # $ − & ' ( ℎ = ! − & " − ' # − ( $ − ℎ § multiplication: ! " # $ − & ' ( ℎ = !& + "( !' + "ℎ #& + $( #' + $ℎ
  25. Javier Gonzalez-Sanchez | SER332 | Spring 2018 | 32 jgs

    Matrix Multiplication § Cn x p = A n x m B m x p § Examples 2 5 3 1 ∗ 6 2 1 5 = 17 29 19 11 6 2 1 5 ∗ 2 5 3 1 = 18 32 17 10
  26. jgs SER332 Introduction to Graphics Javier Gonzalez-Sanchez [email protected] Spring 2018

    Disclaimer. These slides can only be used as study material for the class SER332 at ASU. They cannot be distributed or used for another purpose.