This is a curves tutorial I wrote for an old version of my class. I have converted the old LaTeX sources to Hugo/Markdown using AI tools.
Note: a version of this tutorial was adapted into a book chapter.
This work is similar to the book chapter derived from these notes.
This version does not contain all the copy-editing, formatting, and design work that the book publisher put into the chapter.
I recommend the version in the textbook Fundamentals of Computer Graphics.
Or, you can start with Page 1 (Curves).
Intuitively, think of a curve as something you can draw with
a (thin) pen. The curve is the set of points the pen traces over
an interval of time. While we usually think of a pen writing on
paper (e.g. a curve that is in a 2D space), the pen could move in
3D to generate a space curve, or (if you are a mathematician)
you could imagine the pen moving in some other kind of space.
Read more…To describe a curve, we need to give some facts about its
properties. For “named” curves, the properties are usually specific
to the type of curve. For example, to describe a circle, we might
provide its radius and the position of its center. For an ellipse, we
might also provide the orientation of its major axis, and the ratio of
the lengths of the axes. For free form-curves however, we need to have
a more general set of properties to describe individual curves.
Read more…The most popular representations for curves in computer graphics are
piecewise functions where each curve piece is represented by a
polynomial. Piecewise linear representations (a line segment is a
polynomial of order 1) are a special case of this. In this section, we
look over the mathematics of the individual polynomial pieces. In the
next section, we discuss how to put pieces of polynomials together.
Read more…Now that we’ve seen how to make individual pieces of polynomial
curves, we can consider how to put these curve pieces together.
Read more…In graphics, when we represent curves using piecewise polynomials we
usually use either line segments or cubic polynomials for the pieces.
There are a number of reasons why cubics are popular in computer
graphics:
Read more…It might seem like the easiest way to control a curve is to
specify a set of points for it to interpolate. In practice,
however, interpolation schemes often have undesirable properties
because they have less continuity and offer no control of what
happens between the points. Curve schemes that only approximate
the points are often preferred. With an approximating scheme, the
control points influence the shape of the curve, but do not
specify it exactly. Although we give up the ability to directly
specify points for the curve to pass through, we gain better
behavior of the curve and local control. The two most important
types of approximating curves in computer graphics are Bezier
Curves and B-Spline Curves.
Read more…Bezier curves are one of the most common representations for free-form
curves in computer graphics. The curves are named for Pierre Bezier,
one of the people who were instrumental in their development. Bezier
curves have an interesting history where they were concurrently
developed by several independent groups.
Read more…B-Splines provide a method for approximating a set of points with
a curve made up of polynomials of degree that gives
continuity. Unlike the Bezier splines of the previous section,
B-Splines allow curves to be generated for any desired degree of
continuity (almost up to the number of points). B-Splines are,
therefore, a prefered method for specifying very smooth curves (high
degrees of continuity) in computer graphics. If we want a (or
higher) curve through an arbitrary number of points, B-Splines are
probably the right method.
Read more…