310 likes | 432 Views
Chapter 4. 15 March 2006. EventPro Strategies is looking for a part-time programmer (any language) who knows SQL. For more info, contact Ryan Taylor, ryan@eventprostrategies.com. Agenda. Chapter 4 – Math for Computer Graphics GLUT solids. Transformations.
E N D
Chapter 4 15 March 2006 EventPro Strategies is looking for a part-time programmer (any language) who knows SQL. For more info, contact Ryan Taylor, ryan@eventprostrategies.com
Agenda • Chapter 4 – Math for Computer Graphics • GLUT solids
Transformations • 45-degree counterclockwise rotation about the origin around the z-axis • a translation down the x-axis
Order of transformations 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(); • transformed vertex is NMLv
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
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.
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.
Vectors • N tuple of real numbers (n = 2 for 2D, n = 3 for 3D) • directed line segment • example • velocity vector (speed and direction) • operations • addition • multiplication by a scalar • dot product
VectorsVector and Vector Algebra 1 2 3 2 + 3 = 5 3 4 7
Matrices • Rectangular array of numbers • Addition • QuickMath
1 3 1 Matrices • A vector in 3 space is a n x 1 matrix or column vector.
Matrices • Multiplication 1 0 0 0 0 1 0 0 x 0 0 0 0 0 0 1/k 1 Cos α 0 sin α 0 0 1 0 m -sin α 0 cos α n 0 0 0 1
Matrix multiplication • A is an n x m matrix with entries aij • B is an m x p matrix with entries bij • AB is an n x p matrix with entries cij m • cij = ais bsj s=1
Matrix multiplication m • cij = ais bsj s=1 c11c12 c13 c14 c21c22 c23 c24 c31c32 c33 c34 c41c42 c43 c44 1 0 0 0 0 1 0 0 x 0 0 0 0 0 0 1/k 1 Cos α 0 sin α 0 0 1 0 m -sin α 0 cos α n 0 0 0 1 a b
2D Transformations • Translation: Pf = T + P xf = xo + dx yf = yo + dy • Rotation: Pf = R · P xf = xo * cos - yo *sin yf = xo * sin + yo *cos • Scale: Pf = S · P xf = sx * xo yf = sy * yo
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
Homogeneous Coordinates 1 0 dx x 0 1 dy · y 0 0 1 1
Homogeneous Coordinates sx 0 0 x 0 sy 0 · y 0 0 1 1
Homogeneous Coordinates Cos -sin0 x sin cos0 · y 0 0 1 1
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
GLUT Solids • Sphere • Cube • Cone • Torus • Dodecahedron • Octahedron • Tetrahedron • Icosahedron • Teapot
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).
glutSolidCube and glutWireCube • void glutSolidCube(GLdouble size); • size – length of sides
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.
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.
glutSolidDodecahedron and glutWireDodecahedron • void glutSolidDodecahedron(void);
glutSolidOctahedron and glutWireOctahedron . • void glutSolidOctahedron(void);
glutSolidTetrahedron and glutWireTetrahedron • void glutSolidTetrahedron(void);
glutSolidIcosahedron and glutWireIcosahedron • void glutSolidIcosahedron(void);
glutSolidTeapot and glutWireTeapot • void glutSolidTeapot(GLdouble size); • size - Relative size of the teapot.
Homework next week. • Study for Test on Chapters 1-4, 02/15/05