1 / 48

CSE 470: Computer Graphics

CSE 470: Computer Graphics. Geometric Objects. A vector space contains vectors and scalars. A vector has direction and magnitude (but not position). Vectors are denoted by u, v, w (lower case). A scalar is a real number. Scalars are denoted by a, b, g

veta
Télécharger la présentation

CSE 470: Computer Graphics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 470: Computer Graphics

  2. Geometric Objects • A vector space contains vectors and scalars. A vector has direction and magnitude (but not position). Vectors are denoted by u, v, w (lower case). A scalar is a real number. Scalars are denoted by a, b, g • An affine space is an extension of the vector space to include points (positions in space). Points are denoted by P, Q, R (upper case) 3. A Euclidean space extends the linear vector space to add a measure of size or distance.

  3. Combining entities in affine space • Vector-scalar multiplication |av| = |a| |v|, where |v| is the magnitude of v The direction of av is the same as the direction of v v 2v • Point-vector addition Adding a vector to a point results in another point. P Q + v = P v Q v = P - Q

  4. Vector addition u = (x1, y1) (x1 is horizontal component of u, y1 is vertical component of u.) v = (x2, y2) u+v = (x1+x2, y1+y2) v v u+v u u Place the tail of v at the head of u. Draw a vector from the tail of u to the head of v.

  5. A parametric line P(a) A line in space: P(a) = P0 + av P0 v • Affine sums: • P(a) = Q + av defines a line • There exists R such that • R = Q + v or v = R - Q • P = Q + a(R-Q) = aR + (1-a)Q = a1R + a2Q where a1 + a2 = 1 If 0 <= a <= 1, then all P lie on the line between Q and R.

  6. A parametric line P(a) A line in space: P(a) = P0 + av P0 v • Affine sums: • P(a) = Q + av defines a line • There exists R such that • R = Q + v or v = R - Q • P = Q + a(R-Q) = aR + (1-a)Q = a1R + a2Q where a1 + a2 = 1 If 0 <= a <= 1, then all P lie on the line between Q and R. a = 1 R a = 0 Q

  7. Affine sums for more points The affine sum for three points: P3 P = a1P1 + a2P2 + a3P3, where a1 + a2 + a3 = 1, ai >=0 defines all points inside triangle P1P2P3. P2 P1 The affine sum for n points: P = a1P1 + a2P2 + ... + anPn, where a1 + a2 + ...+ an = 1, ai >=0 defines all points inside convex hull around P1P2...Pn. A convex hull is like shrink-wrap around all n points.

  8. The dot product The dot product (or inner product) of two vectors is defined as follows: where q represents the angle between the two vectors. u Projection of u onto v: q w v

  9. The cross product The cross product of two linearly independent (non-parallel) vectors is a third vector that is orthogonal to both of them. n v u The direction of n is defined by the right handed coordinate system.

  10. A parametric plane A plane in affine space can be defined in terms of two linearly independent vectors as follows: au bv P au bv P0

  11. Defining a coordinate system Any 3D vector, w, can be defined in terms of 3 linearly independent vectors, v1, v2, v3: v2 w v1 v3 a1, a2 and a3 are components of w with respect to the basis (v1, v2, v3).

  12. Matrix representation of vectors We can represent w as a column matrix:

  13. Adding a point of reference Because vectors have no position, we must add a reference point to specify a coordinate frame. Choose P0 as reference. Vectors can be written as: v2 P Points can be written as: v1 P0 v3

  14. Matrices A Matrix is a rectangular array of quantities: 2x3 Matrix 2x2 Matrix 3x1 Matrix M x N Matrix

  15. Matrix multiplication To multiply two matrices, multiply the rows in the first matrix by the columns of the second matrix. Example:

  16. Matrix multiplication In general:

  17. Matrix terminology 1. The transpose of a matrix, exchanges the rows and columns of that matrix. 2. When a matrix, A, is multiplied by the identity matrix, the result is the same matrix A. AI = A 3. The a matrix, A, is multiplied by its inverse, A-1, the result is the identity matrix. AA-1 = I

  18. Recall Coordinate systems Coordinate systems are represented by a set of basis vectors (v1, v2, v3) and a reference point, P0. Vectors can be written as: Points can be written as: v2 P v1 P0 v3

  19. Changing the basis set We can move from basis (v1, v2, v3) to basis (u1, u2, u3) using the following set of equations: v2 u2 u1 v1 v3 u3 In matrix form: u = Mv

  20. Representing a vector in the new basis set Suppose: We would like to find b, such that:

  21. Solving for b bTM = aT (aT)T = a = (bTM)T = MTb b = (MT)-1a

  22. Homogeneous coordinates Transformation of basis vectors leaves the origin unchanged. Homogeneous coordinates allow us to transform the origin. Recall representation of a point: To represent P with matrices, we add a 4th dimension so we can include position: P is represented by: For vectors, the fourth coordinate is zero.

  23. Changing frames in homogeneous coordinates Changing from (v1, v2, v3, P0) to (u1, u2, u3, Q0): u2 u1 v2 Q0 u3 v1 P0 v3 In matrix form:

  24. Transforming a point between coordinate systems Suppose P is represented by b in the u, Q0 space and by a in the v, P0 space. (bT = [b1, b2, b3, 1], aT = [a1, a2, a3, 1]) a = MTb b = (MT)-1a

  25. Affine transformations Affine transformations are linear transformations from a point in one frame to another frame: f(ap + bq) = af(p) + bf(q) a, b are scalars; p, q are vertices. Affine transformations preserve lines. We can represent the transformation as: v = Au where

  26. Recall Affine transformations Affine transformations are linear transformations from a point in one frame to another frame. Affine transformations preserve lines. We can represent the transformation as: v = Au where

  27. Translation Translation: Displace points by a fixed distance in a given direction. d Equations: In matrix form: x' = x + ax y' = y + ay z' = z + az p' = Tp where

  28. Inverse translation T is the translation matrix Inverse translation: Displace by -d

  29. Rotation about the Z axis Rotation about the Z axis y x = rcosf y = rsinf (x', y') r q (x, y) f x' = rcos(q+f) y' = rsin(q+f) x x' = rcos(f)cos(q) - rsin(f)sin(q) = xcos(q) - ysin(q) y' = rsin(q)cos(f) + rcos(q)sin(f) = xsin(q) + ycos(q)

  30. The rotation matrix The equations: x' =xcos(q) - ysin(q) y' =xsin(q) + ycos(q) z' = z In matrix form: P' = RZP where

  31. Rotation about the X axis The equations: z (y', z') y' =ycos(q) - zsin(q) z' =ysin(q) + zcos(q) x' = x r q (y, z) f y In matrix form: P' = RXP where

  32. Rotation about the Y axis The equations: x (z', x') z' =zcos(q) - xsin(q) x' =zsin(q) + xcos(q) y' = y r q (z, x) f z In matrix form: P' = RYP where

  33. Reversing Rotations We use the facts that cos(-q) = cos(q) sin(-q) = -sin(q)

  34. Scaling Translation and Rotation are rigid body transformations. Scaling is not rigid. Equations: x' = bxx y' = byy z' = bzz P' = SP Scale with S(1/bx, 1/by, 1/bz) Inverse scaling:

  35. Concatenation of Transformations • Suppose you want to: • Scale an object • Rotate the object • Translate the object For each vertex, we apply a series of transformations: P1 = SP P2 = RP1 = RSP P3 = TP2 = TRSP For efficiency, we create a new matrix, M = TRS. Each new point can be computed directly as P3 = MP Note: Matrix multiplication is not commutative. Order Matters!

  36. Example P1 P3 P2 • Transformations: • Double the height • Rotate by 90 deg clockwise about the Z axis • Translate horizontally by

  37. Trigonometry review r y q x

  38. Shear y y (x, y) (x', y') q x x Equations: x' = x+ycosq y' = y z' = z Matrix:

  39. Rotation about a fixed point Suppose you want to rotate an object about a fixed point, pf = (xf, yf, zf), about an axis parallel to the Z axis. y pf x z Translate object so that pf is at the origin. Rotate object about the Z axis Translate object back to pf

  40. Calculating the Rotation matrix

  41. General Rotation Can generate any rotation with a combination of RxRyRz = R. Calculating the angles can be tricky. • Rotation about an arbitrary axis through the origin: • Use rotations to align the axis with the Z axis. • Rotate about the Z axis • Undo the rotations from (1).

  42. Defining the Rotation Axis 1. Define rotation axis as a vector of length 1 (a unit vector) with x, y and z components: ax, ay, az where ax az v ay

  43. Calculating qx Project vector v to the y-z plane. (Draw line from tip of v perpendicular to y-z plane). qx is the angle of this projection from the z axis. y az d v ay q x z where

  44. Rotating about X axis

  45. Calculating qy When rotating about the X axis, the x component stays the same, but the y and z components change. y ax r x cosqy = d sinqy = ax 1 qy z Note: The rotation is clockwise, so the angle will be negative.

  46. The Rotation Matrix for Ry

  47. The full rotation Rotation about an arbitrary axis: Rotation about a fixed point, pf, parallel to an arbitrary axis:

  48. Most slides are selected from:http://mathcs.holycross.edu/~croyden/csci343 Thank You

More Related