Evaluators make splines and surfaces that are based on a Bézier (or Bernstein) basis. The defining formulas for the functions in this basis are given in this chapter, but the discussion doesn't include derivations or even lists of all their interesting mathematical properties. If you want to use evaluators to draw curves and surfaces using other bases, you must know how to convert your basis to a Bézier basis. In addition, when you render a Bézier surface or part of it using evaluators, you need to determine the granularity of your subdivision. Your decision needs to take into account the trade-off between high-quality (highly subdivided) images and high speed. Determining an appropriate subdivision strategy can be quite complicated, and it's not discussed here.
Similarly, a complete discussion of NURBS is beyond the scope of this book. The GLU NURBS interface is documented here, however, and programming examples are provided for readers who already understand the subject. In what follows, we assume that you know about NURBS control points, knot sequences, and trimming curves.
If you lack some of these prerequisites, the following references will help.
Burns, Derrick. Dynamic Trimmed Surface Rendering. Ph.D. dissertation, Stanford University, 1993.
de Boor, Carl. A Practical Guide to Splines. New York: Springer-Verlag, 1985.
Farin, Gerald. Curves and Surfaces for Computer-Aided Geometric Design. San Diego, Calif: Academic Press, 1990.
Mortenson, Michael. Geometric Modeling. New York: John Wiley & Sons, 1985.
Newman, William and Sproull, Robert. Principles of Interactive Computer Graphics. New York: McGraw-Hill, 1979.
Some of the terms used in this chapter might have slightly different meanings in other books on spline curves and surfaces, since there isn't total agreement among the practitioners of this art. Generally, the OpenGL meanings are a bit more restrictive. For example, OpenGL evaluators always use Bézier bases; in other contexts, evaluators might refer to the same concept, but with an arbitrary basis.
OpenGL Programming Guide