Presentation is loading. Please wait.

Presentation is loading. Please wait.

Geometric Objects and Transformations Chapter 4. Points, Scalars and Vectors  Points - position in space  Scalars - real numbers, complex numbers obey.

Similar presentations


Presentation on theme: "Geometric Objects and Transformations Chapter 4. Points, Scalars and Vectors  Points - position in space  Scalars - real numbers, complex numbers obey."— Presentation transcript:

1 Geometric Objects and Transformations Chapter 4

2 Points, Scalars and Vectors  Points - position in space  Scalars - real numbers, complex numbers obey a set of rules that are abstractions of arithmetic store values such as distance  Vectors - directed line segment  Points - position in space  Scalars - real numbers, complex numbers obey a set of rules that are abstractions of arithmetic store values such as distance  Vectors - directed line segment

3 Vector Arithmetic  B = 2A  C = A + B  Head to tail rule  E = -A  Inverse  Zero vector = E + A  B = 2A  C = A + B  Head to tail rule  E = -A  Inverse  Zero vector = E + A

4 Point Arithmetic  Can’t add p1 + p2 = p3  Can’t multiply p1 * 2 = p2  What can you do to produce a 2nd point from a 1st?  p1 + V = p2  V = p2 - p1  Can’t add p1 + p2 = p3  Can’t multiply p1 * 2 = p2  What can you do to produce a 2nd point from a 1st?  p1 + V = p2  V = p2 - p1

5 Important Vector Concepts  Normal Vector  A vector at a right angle to a surface.  Graphics Usage of Normal Vector  Used to figure out similarity of direction which is necessary for lighting  More precisely, how much light should fall on a surface is calculated by the similarity of the surface normal and the vector between the light source and the surface.  Similarity of direction = vector dot product  Normal Vector  A vector at a right angle to a surface.  Graphics Usage of Normal Vector  Used to figure out similarity of direction which is necessary for lighting  More precisely, how much light should fall on a surface is calculated by the similarity of the surface normal and the vector between the light source and the surface.  Similarity of direction = vector dot product

6

7 Vector Dot Product  For vectors of length 1 (unit vectors), the dot product is the length of the projection of one vector onto the other.  If the dot product =  1: the vectors point in the same direction  0: the vectors are at right angles  -1: the vectors point in opposite directions  For vectors of length 1 (unit vectors), the dot product is the length of the projection of one vector onto the other.  If the dot product =  1: the vectors point in the same direction  0: the vectors are at right angles  -1: the vectors point in opposite directions

8 Vector Cross Product  The cross product of two vectors A and B is another vector at right angles to the plane created by A and B

9 Defining a Coordinate Space  Need to know 1.The origin (or displacement vector) 2.The basis vectors - The direction and distance for +1 movement along each axis  This definition is relative  To plot a point 1.Begin at origin 2.Travel along the x basis vector [direction] scaled by x coord, then along the y basis vector scaled by the y coord, then finally along the z basis vector scaled by the z coord.  Need to know 1.The origin (or displacement vector) 2.The basis vectors - The direction and distance for +1 movement along each axis  This definition is relative  To plot a point 1.Begin at origin 2.Travel along the x basis vector [direction] scaled by x coord, then along the y basis vector scaled by the y coord, then finally along the z basis vector scaled by the z coord.

10 Transformations  Prior to rendering: view, locate and orient  eye / camera position  3D geometry  Manage the matrices  including the matrix stack  Combine (composite) transformations  Prior to rendering: view, locate and orient  eye / camera position  3D geometry  Manage the matrices  including the matrix stack  Combine (composite) transformations

11 Camera Analogy

12 Stages of Vertex Transformation

13 Transformations  45-degree counterclockwise rotation about the origin around the z-axis  a translation down the x-axis  45-degree counterclockwise rotation about the origin around the z-axis  a translation down the x-axis

14 Order of Transformations  transformed vertex is NMLv glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMultMatrixf(N); /* apply transformation N */ glMultMatrixf(M); /* apply transformation M */ glMultMatrixf(L); /* apply transformation L */ glBegin(GL_POINTS); glVertex3f(v); /* draw transformed vertex v */ glEnd();

15 Translation  void glTranslate{fd} (TYPE x, TYPE y, TYPE z);  Multiplies the current matrix by a matrix that moves (translates) an object by the given x, y, and z values  void glTranslate{fd} (TYPE x, TYPE y, TYPE z);  Multiplies the current matrix by a matrix that moves (translates) an object by the given x, y, and z values

16 Rotation  void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z);  Multiplies the current matrix by a matrix that rotates an object in a counterclockwise direction about the ray from the origin through the point (x, y, z). The angle parameter specifies the angle of rotation in degrees.  void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z);  Multiplies the current matrix by a matrix that rotates an object in a counterclockwise direction about the ray from the origin through the point (x, y, z). The angle parameter specifies the angle of rotation in degrees.

17 Scale  void glScale{fd} (TYPEx, TYPE y, TYPEz);  Multiplies the current matrix by a matrix that stretches, shrinks, or reflects an object along the axes.  void glScale{fd} (TYPEx, TYPE y, TYPEz);  Multiplies the current matrix by a matrix that stretches, shrinks, or reflects an object along the axes.

18 Vectors 1 2 3 2 + 3 = 5 3 4 7

19 Matrices  Rectangular array of numbers  A vector in 3 space is a n x 1 matrix or columnvector.  Multiplication  Rectangular array of numbers  A vector in 3 space is a n x 1 matrix or columnvector.  Multiplication 1 0 0 0 0 1 0 0 x 0 0 0 0 1/k 1 Cos α 0 sin α 0 0 1 0 m -sin α 0 cos α n 0 0 0 1 131131

20 Matrix Multiplication  A is an n x m matrix with entries a ij  B is an m x p matrix with entries b ij  AB is an n x p matrix with entries c ij m  c ij =  a is b sj s=1  A is an n x m matrix with entries a ij  B is an m x p matrix with entries b ij  AB is an n x p matrix with entries c ij m  c ij =  a is b sj s=1

21 2D Transformations  Translation: Pf = T + P x f = x o + dx y f = y o + dy  Rotation: Pf = R · P x f = x o * cos  - y o *sin  y f = x o * sin  + y o *cos   Scale: Pf = S · P x f = sx * x o y f = sy * y o  Translation: Pf = T + P x f = x o + dx y f = y o + dy  Rotation: Pf = R · P x f = x o * cos  - y o *sin  y f = x o * sin  + y o *cos   Scale: Pf = S · P x f = sx * x o y f = sy * y o

22 Homogeneous Coordinates  Want to treat all transforms in a consistent way so they can be combined easily  Developed in geometry (‘46 in cambridge) and applied to graphics  Add a third coordinate to a point (x, y, w)  (x1, y1, w1) is the same point as (x2, y2, w2) if one is a multiple of another  Homogenize a point by dividing by w  Want to treat all transforms in a consistent way so they can be combined easily  Developed in geometry (‘46 in cambridge) and applied to graphics  Add a third coordinate to a point (x, y, w)  (x1, y1, w1) is the same point as (x2, y2, w2) if one is a multiple of another  Homogenize a point by dividing by w

23 Homogeneous Coordinates 1 0 dxx 0 1 dy · y 0 0 11 1 * x+ 0 * y + dx * 1 0 * x+ 1 * y + dy * 1 0 * x+ 0 * y + 1 * 1 1 0 dxx 0 1 dy · y 0 0 11 1 * x+ 0 * y + dx * 1 0 * x+ 1 * y + dy * 1 0 * x+ 0 * y + 1 * 1

24 Homogeneous Coordinates 1 0 dxx 0 1 dy · y 0 0 11 1 0 dxx 0 1 dy · y 0 0 11

25 Homogeneous Coordinates sx 0 0 x 0 sy 0 · y 0 0 1 1 sx 0 0 x 0 sy 0 · y 0 0 1 1

26 Homogeneous Coordinates Cos  -sin  0 x sin  cos  0 · y 0 0 1 1 Cos  -sin  0 x sin  cos  0 · y 0 0 1 1

27 Homogeneous Coordinates 1 0 0 x x 0 1 0 · y = y 0 0 1 1 1  Identity Maxtrix x point p = point p 1 0 0 x x 0 1 0 · y = y 0 0 1 1 1  Identity Maxtrix x point p = point p

28 Combining 2D Transformations  Rotate a house about the origin  Rotate the house about one of its corners  translate so that a corner of the house is at the origin  rotate the house about the origin  translate so that the corner returns to its original position  Rotate a house about the origin  Rotate the house about one of its corners  translate so that a corner of the house is at the origin  rotate the house about the origin  translate so that the corner returns to its original position

29 OpenGL Buffers  Color  can be divided into front and back for double buffering  Alpha  Depth  Stencil  Accumulation  Color  can be divided into front and back for double buffering  Alpha  Depth  Stencil  Accumulation

30 Double Buffering

31 Animating Using Double Buffering  Request a double buffered color buffer glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE);  Clear color buffer  glClear(GL_COLOR_BUFFER_BIT);  Render Scene  Request swap of front and back buffers  glutSwapBuffers();  Repeat steps 2-4 for animation.  Request a double buffered color buffer glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE);  Clear color buffer  glClear(GL_COLOR_BUFFER_BIT);  Render Scene  Request swap of front and back buffers  glutSwapBuffers();  Repeat steps 2-4 for animation.

32 Depth Buffering

33 3D Coords --> Raster coords  Transformations  Clipping  Viewport transformation.  Transformations  Clipping  Viewport transformation.

34 GLUT Solids  Sphere  Cube  Cone  Torus  Dodecahedron  Octahedron  Tetrahedron  Icosahedron  Teapot  Sphere  Cube  Cone  Torus  Dodecahedron  Octahedron  Tetrahedron  Icosahedron  Teapot

35 glutSolidSphere and glutWireSphere  void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);  radius - The radius of the sphere.  slices - The number of subdivisions around the Z axis (similar to lines of longitude).  stacks - The number of subdivisions along the Z axis (similar to lines of latitude).  void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);  radius - The radius of the sphere.  slices - The number of subdivisions around the Z axis (similar to lines of longitude).  stacks - The number of subdivisions along the Z axis (similar to lines of latitude).

36 glutSolidCube and glutWireCube  void glutSolidCube(GLdouble size);  size – length of sides  void glutSolidCube(GLdouble size);  size – length of sides

37 glutSolidCone and glutWireCone  void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);  base - The radius of the base of the cone.  height - The height of the cone.  slices - The number of subdivisions around the Z axis.  stacks - The number of subdivisions along the Z axis.  void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);  base - The radius of the base of the cone.  height - The height of the cone.  slices - The number of subdivisions around the Z axis.  stacks - The number of subdivisions along the Z axis.

38 glutSolidTorus and glutWireTorus  void glutSolidTorus(GLdouble innerRadius,GLdouble outerRadius, GLint nsides, GLint rings);  innerRadius - Inner radius of the torus.  outerRadius - Outer radius of the torus.  nsides - Number of sides for each radial section.  rings - Number of radial divisions for the torus.  void glutSolidTorus(GLdouble innerRadius,GLdouble outerRadius, GLint nsides, GLint rings);  innerRadius - Inner radius of the torus.  outerRadius - Outer radius of the torus.  nsides - Number of sides for each radial section.  rings - Number of radial divisions for the torus.

39 glutSolidDodecahedron and glutWireDodecahedron  void glutSolidDodecahedron(void);

40 glutSolidOctahedron and glutWireOctahedron.  void glutSolidOctahedron(void);

41 glutSolidTetrahedron and glutWireTetrahedron  void glutSolidTetrahedron(void);

42 glutSolidIcosahedron and glutWireIcosahedron  void glutSolidIcosahedron(void);

43 glutSolidTeapot and glutWireTeapot  void glutSolidTeapot(GLdouble size);  size - Relative size of the teapot.  void glutSolidTeapot(GLdouble size);  size - Relative size of the teapot.

44 Homework  Project part 2 due 2/19  Turn in a program that, at a minimum, draws your initial scene.  Project part 2 due 2/19  Turn in a program that, at a minimum, draws your initial scene.


Download ppt "Geometric Objects and Transformations Chapter 4. Points, Scalars and Vectors  Points - position in space  Scalars - real numbers, complex numbers obey."

Similar presentations


Ads by Google