# Exam 1 Study Guide

Exam 1 will cover the class topics from the first 6 weeks of class, up to and including Curves (but not 3D).

The exam covers the topics in the first 11 lectures, the first 6 workbooks (including the Train workbook), and the readings required by the workbooks. The bonus videos are also fair game, but I will not ask questions about GIT on the Exam. (Closures, almost certainly, and the Curves review video is a review of things in the other resources).

This is a rough outline - no promises that it includes everything (any ommission of a topic is not intentional).

A more compact outline can be seen in the video outlines (which organizes things by lecture): Lecture Materials: Videos and Slides. This doesn’t include the workbooks or readings, but most important concepts were discussed in some video.

Hint: Because the exam rules do not preclude you from accessing resources (see Exams (policy)), we are less likely to ask you things that are easy to look up (like memorizing equations), since you can always look them up.

- Intro to Computer Graphics
- Applications
- Neighboring Fields
- Course Outline and mechanisms

- Web Browser Programming
- JavaScript basics

- graphicsAPIs and API types
- Web Browser Programming Basics
- DOM, Elements
- embedding javascript, timing
- scripts and event handlers

- Event Driven Programming
- browser programming model
- kinds of events
- animation loops via events

- JS Programming Tips (Lecture 2 and Extra Video)
- basic features, this, objects, …
- type checking
- lexical scope and closures

- Basics of Human Vision (as motivation for graphics)
- Basic graphical representation
- Raster vs. Geometric
- Buffers
- Continuous vs. Flicker/Strobe
- Flicker Fusion
- Buffering and Double Buffering
- Pixels as point samples

- Web Browser APIs
- Canvas 2D API basics
- contexts
- pen/state model
- immediate vs. retained mode
- coordinate system
- state and save/restore, stacks
- polygon filling rules (even-odd, non-zero winding)
- non-simple polygons
- event model
- transformations in Canvas

- SVG (retained mode API)
- basic concepts
- event and programming model

- Transformations
- viewing as coordinate system changes
- composition
- forward/backwards view
- local/global coordinates
- basic transformations (rotate, translate, scale, skew/shear)
- center of rotation/scaling
- combining basic transformations
- non-uniform scales
- properties of rotations
- thinking of transformations as functions

- Hierarchical Modeling
- instancing
- trees/dags
- hierarchy in scene graph APIs

- Vector Operations for Graphics
- points, vectors, tuples
- vector and matrix operations

- Linear and Affine Transformations
- matrix representations of key transforms
- properties of linear and affine transformations

- Homogeneous Coordinates
- Transformations in APIs
- matrix stacks

- Particle Motion and Flocking
- Curve Foundations
- curves vs. other shapes
- parameterizations
- forms of curves (parametric, implicit, subdivision)
- free vs. shape parameters

- Smoothness and Continuity
- continuity conditions
- geometric vs. deriviative continuity
- vanishing deriviatives

- Piecewise polynomials
- forms
- basis functions
- cubics
- hermite forms
- cardinal forms and interpolation
- splines
- Catmull-Rom
- TCB

- Bezier Curves
- Bezier Properties
- Bezier Algorithms (DeCastlejau and polynomial forms)
- Dividing Bezier Curves
- Converter to/from Bezier Curves
- limits of Bezier curves

- Arc Length
- concepts
- numerical computation

- Interpolation
- high order splines
- Natural Splines (only briefly)

- B-Splines
- basic ideas
- intuitions for cubics
- chakin corner cutting as a subdivision approach
- note: we will only require students to know the basic concepts of B-Splines (as discussed in lecture), the B-Spline readings were optional

- Curve concepts hidden in workbooks
- offset curves
- adaptive division of curves for drawing
- building matrices directly (to put things in places)
- how matrices are represented in code (e.g., row vs. column major)
- color representations (the color tutorial on the course web was a required reading)
- SVG events