The best thing to do is to look at the syllabus for the rough topics covered, the readings, and the tutorials. But, the most important things are what we talked about in class. There is audio linked on the syllabus page. You can also look at my notes which are more a reminder of what I wanted to talk about than the specifics that you should know.

My notes from previous years might also be useful. In 2010, these were a lot of hand-written ideas, although earlier years have more details. 2009 is well organized, 2008 is also organized and more complete. Be warned, the topics discussed n class have been evolving. (and the order has been changed around). The main important stuff is still there.

Week 1:

- Pixels and Point Samples
- Imaged-Based vs. Object-based graphics (pixels vs. primitives)
- Linear Algebra basics (points, vectors, vector operations, linear combinations, spaces)
- Coordinate systems
- Orthogonality, Projection
- Changing coordinate systems, transforms
- SVG: you don’t need to remember the syntax, but the concepts are important
- Surfaces and Solids

Week 2: (some of this was actually discussed in week 3)

- More linear algebra in 2D, linear maps, linear transforms
- Common transforms used in graphics (translate, rotate, skew, …)
- Inverses, Composition, and other properties
- Norms, distance, dot products
- Matrix operations (multiplication, determinants)
- Co-ordinate systems in 3D (handedness)
- Cross Products
- Rigidity and Rotations
- Properties of Rotations
- Homogeneous coordinates
- Composition
- Nested transformations (grouping, matrix stacks)
- Forward Kinematics
- (note: we really didn’t talk about inverse kinematics in class. there was an easy way to do the assignment using high-school trigonometry, but many people learned about complicated numerical methods that are beyond what we do in this class)

Week 3:

- 3D coordinate systems, handedness
- Linear algebra for 3D (cross products, …)
- Pushmatrix/popmatrix
- Constructing orthonormal bases
- 3D Linear transforms, 3D Homogeneous coordinates
- 3D Rotations
- Different representations for 3D Rotations
- matrix form (properties)
- Euler Angles and Axis-Angle
- brief mention of Quaternions – no details (except in advanced parts of readings)

- Using sequences of transforms to build transforms (e.g. rotate around a point)

Week 4:

- Pieces of drawing in 3D (Viewing, Visibility, …)
- Viewing / Projections
- Orthographic Projections
- Concept of Viewing Volume
- Viewing/Camera Transform vs. Projection part
- Camera Metaphor (position camera in world, …)
- Pinhole camera, pinhole geometry
- Basic perspective
- Using homogeneous co-ordinates for perspective transform
- Issues with keeping Z
- More complicated projection matrices
- Camera transform construction (lookfrom/lookat/vup)
- Drawing in 3D via 2D
- steps of the process (rasterization, transformation, …)

- How triangles and lines get drawn (we just glossed over this)
- Visibility
- Painter’s algorithm
- Z-Buffer (understand ideas, order independence, know the issues pro/con)

- This was when we really talked about 3D rotations (see above)

Week 5 / 6

- Basic curve concepts / shape concepts
- Forms of shape representation (parametric, implicit)
- curves vs. surfaces vs solids vs. dimensions of the embedding
- local and global properties (differential properties vs. …)
- parameterizations
- free parameters vs. control parameters
- reparameterization
- arc-length parameterization (explained via differential property, see also the video tutorial)
- interpolating vs. non-interpolating (approximating) curves
- corner cutting algorithm (briefly) – leads to generalized decastlejau
- Bezier curves – de castlejau algorithm for evaluation and subdivision
- Continuity
- C continuity and derivative levels
- G continuity and its contrast w/C continuity

- Control Points
- Basis / Blending Functions
- Lagrangian interpolation (why not)
- Cubic Forms
- Hermite Interpolation
- Cardinal Cubics (interpolating C1 cubics)
- Note: you don’t have to memorize the blending functions, but you should understand the concepts
- Note: we didn’t get to talk about B-Splines

- Important properties of Bezier curves
- Note: you may not remember the formulas for the different kinds of curves, but you should be able to sketch them

Week 7

- Drawing context
- Practical coordinate systems
- Issues with perception and displays (flicker fusion, …)
- Frame buffers, Double buffering
- Fltk concepts – note: you are not expected to know specific commands, but the basic concepts as discussed in class are important
- OpenGL Matrix Stacks
- barrycentric interpolation
- Local Lighting Model – local vs. global lighting
- Specular lighting (phong specular exponent, half angle, …)
- Diffuse lighting (lamberts law)
- Ambient lighting
- The lighting equation and what we control
- Phong vs. Gouraud shading
- Lighting Geometry (point vs. directional lights, spotlights)

Week 8

- Normals and adjoints
- Per-triangle vs. Per-vertex vs. Per-pixel
- Specifying triangles efficiently to the graphics hardware (Vertex Re-Use)
- Basic texture concepts
- Texture coordinate concepts
- Solid vs. Surface textures
- Image-based texture concepts (and filtering)
- Procedural vs. Image-based textures