3C) NURBS NURBS are covered in SMAG section 4 and in some detail in R&A Section 5-13. ##NOTESONLY## Parts of this Section of R&A are included in the handout. ##-NOTESONLY##

Non-uniform rational B-splines are the curves that are currently used in any graphics application that requires curves and surfaces with more functionality than Bezier curves can offer. In addition to the features listed in Part 3B, NURBS are invarient with respect to perspective transforms.

NURBS curves incorporate -- as special cases -- uniform B-splines, non-rational B-splines, Bezier curves, lines, and conics. NURBS surfaces incorporate planes, quadrics, and tori.

##WEBONLY## ##-WEBONLY## Exercises
  1. Review from IB: What are homogeneous coordinates and what are they used for in computer graphics?
  2. Explain how to use homegeneous coordinates to get rational B-splines given that you know how to produce non-rational B-splines.
  3. Convince your supervisor that you understand why NURBS includes Uniform B-splines, Non-Rational B-splines, Beziers, lines, conics, quadrics, and tori.
  4. When would you use Bezier curves and when would you use B-splines? (i.e. why have B-splines, in general, replaced Bezier curves in CAD?)
  5. [1998/7/12] Consider the design of a user interface for a NURBS drawing system. Users should have access to the full expressive power of the NURBS representation. What things should users be able to modify to give them such access and what effect does each have on the resulting shape?
  6. For each of the items (in the previous question) that the user can edit: (i) Give sensible default values; (ii) Explain how they would be constrained if a `demo' version of the software was to be limited to cubic Uniform Non-rational B-Splines.
  7. [1999/7/11] (c) Show how to construct a circle using non-uniform rational B-splines (NURBS). (d) Show how the circle definition from the previous part can be used to define a NURBS torus. [You need explain only the general principle and the location of the torus' control points.]
##WEBONLY##
##-WEBONLY##