Final questions
1. Explain how the callback functions (such as thouse registered using glutDrawFunc, glutKeyBoardFunc etc)
get called.
2. Why are homogeneous coordinates used to represent points in OpenGL internally?
3. Explain the difference between linear, affine and rigid transformations.
Give examples of linear but not affine, affine but not rigid; why each of this transformations
types necessary?
4. Describe how an object consisting of multiple rectangles can be drawn using
a single function drawSquare() and a hierarchy of transformations. Specify the transformations
for an example.
5. Describe two principal ways of displaying images using OpenGL; what are the advantages and
disadvantages of each approach?
6. Expalain the difference between filter types used in texture mapping in OpengGL
(GL_NEAREST, GL_LINEAR). Provide examples when each type works better for magnified
textures.
7. What are mipmaps used for? Explain why mipmapped textures usually look better;
explain the source of potential excessive blurring in mipmapping, and how it can be
potentially improved.
8. What is alpha channel useful for? Explain the advanages of using alpha channel vs.
designated transparent color. Expalain how you would use alpha channel to draw
semi-transparent 3D objects, and what the problems are.
9. Describe the OpenAL model for 3D sound. Explain how the illusion of a sound source moving
from left to right and back to front can be achieved. What is the Doppler effect? Provide
examples when it may be useful in games.
10. Describe the main stages of OpenGL transformation pipeline, and what these are used for.
For each stage specify the type of transformations applied and why this stage is separate
from the other stages (rather than combined with them into a single matrix multiplication
operation).
11. Explain what different projection transformation operations do:
glOrtho, gluPerspective, glFrustum (you do not have to memorize the matrices, but
you need to be able to explain what transforms they correspond to).
Given an example of a situation when gluPerspective is insufficient and glFrustum needs
to be used.
12. What OpenGL transformation is affected by gluLookAt? Describe how the transformation
matrix is constructed from the arguments (camera position, view center, up direction).
What are the constraints on parameters, i.e. for what combinations of parameters the
result is meaningless?
13. Describe the setup for the trackball interface and steps needed to compute
the rotation matrix from the mouse change in position.
14. Write down the pseudo-code for a basic point-like particle physics simulator
(without specifying the details for collision), supporting gravity and damping,
using Euler's method for advancing the time steps.Explain why Euler's method may diverge.
15. Explain the formulas for changes in velocity of two colliding particles:
what are the initial assumpitions and equations, how these are combined to obtain the final
formula. Include the formula.
16. State the equations of motion for a rigid object in 3D and define all quantities in
these equations.
17. How is the velocity of a point of a rigid object related to the velocity of the center of mass
and angular velocity in 2D and 3D? How is inertia defined in 2D?
18. Derive the inertia tensor in 3D for a collection of particles with masses mi at distances
ri from their center of mass. Why, unlike 2D case, the matrix of the inertia tensor needs to be
updated whenever the object moves?
19. Describe the steps of the derivation of the change of velocity and angular velocity of
colliding rigid objects in 3D: you need to state the assumptions and starting equations, but
no need to memorize the final formula.
20. Describe a data structure for a mesh object and how basic mesh operations
are implemented (find a triangle adjacent to
a given triangle across an edge, find all vertices adjacent to a given vertex,
traverse all triangles).
Denis Zorin