Final questions

1. Explain what homogeneous coordinates are, how points are converted to and from homogeneous coordinates. Why are homogeneous coordinates used to represent points in OpenGL internally?
2. Write the homogeneous matrix for a translation.
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. How would you draw a complex object consisting of multiple rectangles assembled in a hierarchy of parts, using a single function drawSquare() and a hierarchy of transformations? Specify the transformations for an example.
5. Give examples of transformations that commute (that is can be applied in any order, and do not) the result changes if the order is reversed.
6. 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).
7. Explain 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.
8. Mipmaps -- data structure and how is it used for texturing. Explain why mipmapped textures usually look better; explain the source of potential excessive blurring in mipmapping.
9. 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). Give an example of a situation when gluPerspective is insufficient and glFrustum is needed.
10. What OpenGL transformation is affected by gluLookAt? Describe how the transformation matrix is constructed from the arguments (camera position, view center, up direction) -- you do not need to write the matrix, just outline the steps. What are the constraints on parameters, i.e. for what combinations of parameters the result is meaningless?
11. Describe the half-edge 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).
12. What are the formulas for specular and diffuse lighting used in OpenGL? (it is sufficient to write expressions for one color). Explain the difference between diffuse and specular lighting.
13. Z-buffer algorithm for rendering.
14. Define a cubic B-spline curve (you do not have to specify the formulas for basis functions explicitly). Explain what conditions determine the formulas for the basis functions.
15. Define a Bezier curve.
16. Subdivision algorithm for B-spline curves.
17. Loop subdivision algorithm for surfaces. Include boundary cases.
18. Basic ray tracing algorithm with reflection and refraction (you do not have to specify formulas for refraction).
19. Programmable graphics pipeline: where do vertex shaders and fragment shaders fit in. Explain what vertex and fragment shaders can be used for, and where the inputs for either shader type come from and what the outputs can be.

Denis Zorin