# CS 779 Splines and Their Use in Computer Graphics

## Objectives

Computer-aided design systems originally offered only simple primitives (spheres,
cylinders, polytopes, etc.) as building blocks for the creation of composite
objects. Now such systems provide spline primitives as well for the construction
of free form curves and surfaces. In addition, splines provide an important
class of functions for approximation in areas such as finite element methods
and numerical data fitting.

This course presents a general introduction to spline theory and recent developments
in techniques for representing, manipulating and rendering curves and surfaces
constructed from splines in a graphics environment. Applications of interest
include computer-aided design, synthetic image generation and animation.

## References

An Introduction to Splines for Use in Computer Graphics and Computer-Aided
Design, by R. Bartels, J. Beatty and B. Barsky; A Practical Guide to Splines,
by C. de Boor, Springer-Verlag; Curves and Surfaces for Computer Aided Geometric
Design, by G. Farin, Academic Press; Fundamentals of Computer Aided Geometric
Design, by J. Hoschek and D. Lasser; Computer Graphics, by D. Hearn and M.P.
Baker and relevant journal articles.

## Outline

### Mathematical Background

A review of linear and affine spaces. Introduction to polynomials, polynomial
bases, multi-linear and multi-affine functions. The mathematical description
of curves and surface as parametric mappings.

### Bezier and B-Spline Curves

Piecewise polynomials. Conditions of mathematical continuity. Bernstein poly-nomials
and B-spline basis functions. The properties of nonnegativity, compact support,
variation diminishing, partition of unity. Evaluation algorithms: de Casteljau,
de Boor, and forward differencing.

### Modification and Design

Degree raising, knot insertion, degree reduction, and knot removal. Sweeps,
extrusions, revolutions, and hierarchies. Manipulation methods.

### Surfaces

Tensor-products, triangular-patches, and geometric continuity. Interpolation,
approximation, and network filling. Tessellation and ray tracing.