These notes are some questions to think about to help you prepare for the final exam.

DO NOT TURN ANYTHING IN! We will not look at or grade anything. We will find out if you took this seriously by looking at your exams.

Some notes about the final:

A couple of hints:

We do not expect you to memorize formulas. However, you should understand what different things mean.

We will not expect you to do complex calculations by hand. Our goal is to produce an exam that you will not need a calculator for.

Because of the time pressures on grading, we will probably try to create questions that are easy to grade. Don't expect essay questions.

You might want to look around at other university's courses for more review materials. Each course is slightly different, both in content and difficulty. Mark Levoy's class at Stanford has some great resources for exam study (remember, he has 4 TAs for 80 students!).

The questions here are meant to get you to think about the topics (and tend to be open ended essay type things). I've tried to organize it by the order we covered things in the course, with a few exceptions. No guarantees on this being complete. You should check the course syllabus and your notes to remind yourself what topics we covered.

We will expect you to know what the important algorithms for graphics are, what they do, and why they might be used. For example, you should know that Bresenham's line-drawing algorithm allows lines to be drawn into a frame buffer using only integer calculations without division, and is therefore more appropriate for hardware implementations than other algorithms. We wouldn't expect you to remember the exact details of the implicit formulas inside of the algorithm.

We will NOT test you on FlTk.

1. Imaging

How do we perceive images? How does this effect how we create images?
 
What is gamma correction? Why do we need it?
 
How do we perceive color? How does this impact how we display images?
You should be sure to understand the concept of gamut.
How do we store and represent color? What are the different "color systems" that are used in computer graphics? Why would we need more than one?
 
What is quantization? How does it effect image display? How do we deal with it?
You should have some understanding of the algorithms for displaying quantized images, such as half-toning and dithering. We won't ask you to do Floyd Steinberg by hand again.
What is the persistence of vision? Why is it important to graphics display design?
 
What are the cues that cause us to perceive things in 3D?
 
What does it mean to sample an image correctly? What happens when you don't? How do we apply filtering in the sampling operations?
You don't need to memorize convolution kernels, but be sure to understand the intuitions of sampling!
What is compositing? How do we do it? What is it useful for?
We will not expect you to memorize what all of the Porter Duff operators are, but we might ask you to know what the outcome will be for the most common ones. Or at least to be able to interpret the blending functions.
What is the alpha channel? What is it useful for? How might we obtain it? What is pre-multiplied alpha?
Don't memorize the blue-screening equations! You should have some intuitions for why its hard.

2. Graphics "Basics"

What are the key algorithms for rasterization? When are they used?
You should know what algorithms are appropriate for which tasks, but we will not expect you to remember the details of how each is implemented. Know key features (like the Bresenham's algorithms don't use division).
What are the different mechanisms for storing graphics state? What is the difference between immediate mode and retained mode graphics architectures? When would a retained mode architecture be more appropraite?
We brushed over this. OpenGL is generally immediate mode, with state retained on a stack. Things get drawn when you draw each object. Retained mode just keeps stuff in storage until you say "draw." Retained mode is NOT the same as double buffering (understand why they are different, and why they might seem the same to the programmer/user).

3. Transformations and Graphics Math

The concept of a coordinate system and coordinate transformations are key!

What are the common types of transformations used in graphics? Which are linear?
We won't expect you to memorize the matrices. But do understand what the different transforms do!
What are homogeneous coordinates? Why do we use them? How do we use them?
 
Why do we use matrix representations of transformations? How do we use them? Why is a matrix stack useful?
 
What happens when a sequence of transformations are applied to an object.
 
How do we use transformations to create hierarchical (or grouped) objects? How is the graphics stack applied to this?
 
How do we represent rotations in 3D? What are Euler Angles? What happens when we perform multiple rotations in succession? What are the pros and cons of the Euler Angles representation? What are the alternatives?
We didn't give any details of the alternatives in class, so we don't expect you to understand Quaternions--only to know that they are an alternative to Euler Angles.

4. Curves and Surfaces

How are parametric curves used to describe geometry? Parametric surfaces?

Why do we use piecewise cubics so often in graphics? How do we use them?

 
What are the common types of piecewise cubics? Why would you prefer to use one over the other (for example, cardinal splines rather than Hermite's)? How can different types of cubics be converted using matrix transformations?
We will not expect you to memorize the matrices for each type of cubic. We also would not expect you to invert a matrix by hand.
What are the limitations of using piecewise cubic curves? Why might you want to use quartics or quintics?
 
What are approximating curves? Why would you care to use them?
 
What is the difference between a solid representation and a surface representation? Why is one harder than the other?
 
What is cracking?
 
What are the differential (normals, tangents, ...) properties of a curve or surface? How do we use those in graphics?
 
Why is arc-length parameterization different than standard parameterizations? Why might we need to adaptively subdivide?
 
What is a subdivision curve/surface?
 

5. Viewing

What is perspective? How do we model it mathematically? How do we encode it in matrix form? What is the difference between parallel and perspective projections.
We don't expect you to memorize the matrices. But we might give them to you and expect you to interpret them.
How do we describe viewing geometry? What is a camera transformation? What are the more convenient ways to describe the camera?
 
Describe the trip "down the graphics pipeline" that a world space coordinate makes to wind up on the screen?
You must definitely know all of the words: clipping, frustum, viewport, ...

6. Rendering

What is photorealism? What contributes to it?

What are some methods for hidden surface elimination? What is a Z-buffer? What is depth-complexity?

How does ray-tracing work? What types of effects are easy to achieve with a ray-tracer? Do you have to use a ray-tracer to achieve these effects?

When are different rendering methods appropriate?

7. Lighting and Shading

What are the elements of the basic lighting model used in computer graphics? What do each of the components do? What effects each of the components?
You should understand the difference between diffuse, specular, and ambient terms. Be sure to have the intuitions for what causes the values.
What is the difference between a local and a global lighting model? What kinds of effects would you see in global lighting (as opposed to local lighting)?
We didn't talk about how to implement global lighting (e.g. radiosity algorithms). However, it is important to know why you might want a radiosity renderer.
What are the differences between the different shading methods (Flat, Gouraud, Phong)? What types of differences might you see in images?
 
What are the different types of mapping techniques that are used to "fake" complexity in scenes? How do sampling issues come into play with these mapping techniques?