# Exam2 Outline

See the Mini-Exam 2: Rules and Information page instead.

This is an outline of the topics covered during Weeks 5-8, which will be the focus of Mini-Exam 2. Because these topics build on earlier topics, things from the first weeks of class are still relevant (although they will not be tested directly).

Shapes Basics

• curves vs. areas vs. surfaces vs. volumes
• implicit vs. parametric vs. subdivision forms
• free parameters (parametric representations)

Parametric Curves

• tangents
• piecewise polynomials and parameters
• cubic segments
• Blending (basis) function forms

Piecewise Parametric curves

• continuity conditions
• C vs. G continuity
• Hermite forms

Interpolating Curves

• Hermite interpolation
• sketching and designing with Hermites
• Cardinal Splines, Catmull-Rom splines
• sketching, drawing, converting to other forms, …
• locality (interpolating high-order polynomials)

Bezier Curves

• Bezier curve principles and properties
• Cubic Bezier Curves (relationship to Hermite)
• Geometric Algorithms (DeCastlejau)
• Basis Functions (Bernstein forms)
• limits of Bezier curves (why rational curves)
• Bezier curves in APIs

• Arc length and arc-length parameterization
• Approximating curves with segments
• B-Splines
• motivations, blending/basis functions

3D Basics

• how we see in 3D
• depth cues (1 eye, 2 eye, image based)
• 3D coordinate systems, right hand rule
• Normals and Tangents

3D APIs

• comparison of WebGL and THREE
• main abstractions of 3D Graphics

THREE Basics

• hello cube abstractions
• meshes vs. geometries
• materials
• transformations and hierarchy
• state vs. transformation commands

Transformations in 3D

• use of homogeneous coordinates
• rotate, translate, and scale in THREE

Viewing (Projection) transformations

• Viewing vs. Camera Transformations
• type of projections
• projection math
• clipping and frustum

Rotations

• basic facts
• single axis rotations
• lookat transformations
• Euler Angles
• Axis Angle representations
• Gimbal Lock and other Euler Angle problems
• Motivations for Quaternions

JavaScript Tips:

• ES6 modules
• Casts and Type Checks
• modules and type checks
• inheritance and subclasses
• methods and this
• asynchronous programming (callbacks, promises, await)
• parameter passing with dictionaries (WB7-1)