Title: 10 February 2004
1Chapter 4
2Agenda
- Program 2 Due 2/17
- Chapter 4 transformations
- GLUT solids
3OpenGL Buffers
- Color
- can be divided into front and back for double
buffering - Alpha
- Depth
- Stencil
- Accumulation
4Double Buffering
5Animating 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.
6Depth Buffering
73D Coords --gt Raster coords
- Transformations
- Clipping
- Viewport transformation.
8Transformations
- Prior to rendering view, locate and orient
- eye / camera position
- 3D geometry
- Manage the matrices
- including the matrix stack
- Combine (composite) transformations
9Camera Analogy
10Stages of Vertex Transformation
11Transformations
- 45-degree counterclockwise rotation about the
origin around the z-axis - a translation down the x-axis
12Order of transformations
glMatrixMode(GL_MODELVIEW) glLoadIdentity() glMu
ltMatrixf(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
13Translation
- void glTranslatefd (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
14Rotation
- void glRotatefd(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.
15Scale
- void glScalefd (TYPEx, TYPE y, TYPEz)
- Multiplies the current matrix by a matrix that
stretches, shrinks, or reflects an object along
the axes.
16Vectors
- 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
17Vectors
1 2 3 2 3 5 3 4 7
18Matrices
- Rectangular array of numbers
- A vector in 3 space is a n x 1 matrix or
column vector. - Multiplication
1 0 0 0 0 1 0 0 x 0 0 0 0 0
0 1/k 1
Cos a 0 sin a 0 0 1 0 m -sin a
0 cos a n 0 0 0 1
19Matrix 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
- s1
202D 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
21Homogeneous 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
22Homogeneous Coordinates
- 1 0 dx x
- 0 1 dy y
- 0 0 1 1
23Homogeneous Coordinates
- sx 0 0 x
- 0 sy 0 y
- 0 0 1 1
24Homogeneous Coordinates
- Cos? -sin? 0 x
- sin? cos? 0 y
- 0 0 1 1
25Combining 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
26GLUT Solids
- Sphere
- Cube
- Cone
- Torus
- Dodecahedron
- Octahedron
- Tetrahedron
- Icosahedron
- Teapot
27glutSolidSphere 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).
28glutSolidCube and glutWireCube
- void glutSolidCube(GLdouble size)
- size length of sides
29glutSolidCone 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.
30glutSolidTorus 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.
31glutSolidDodecahedron and glutWireDodecahedron
- void glutSolidDodecahedron(void)
32glutSolidOctahedron and glutWireOctahedron .
- void glutSolidOctahedron(void)
33glutSolidTetrahedron and glutWireTetrahedron
- void glutSolidTetrahedron(void)
34glutSolidIcosahedron and glutWireIcosahedron
- void glutSolidIcosahedron(void)
35glutSolidTeapot and glutWireTeapot
- void glutSolidTeapot(GLdouble size)
- size - Relative size of the teapot.
36Homework for next week.
- Program 2 due 2/17
- Study for Test on Chapters 1-4, 2/19