Introduction

So far, we've been talking about everything in terms of triangles and polygons - but there's a lot more in the real world!

Notice the complexity in this image.

Notice the complexity in this image.

Capturing & simulating the dynamics of cloth, for example, requires much more complex geometric shapes!

Capturing & simulating the dynamics of cloth, for example, requires much more complex geometric shapes!

Another example of complex geometric rendering.

Another example of complex geometric rendering.

There are many different ways of representing geometry. So far, we've been talking about explicit ones - point clouds, polygon meshes, etc. — often, there are many implicit ones, that aren't exactly tangible, that require equations rather than explicit shapes we can see.

Here are a few different ways of representing the geometry of different objects.

Here are a few different ways of representing the geometry of different objects.

Smooth Curves

So far, we can make things with corners (lines, triangles, squares) and shapes (circles, ellipses, etc.). Many applications require smooth shapes (camera paths, vector fonts, resampling filter functions, CAD design, object modeling, animation, etc.).

Note that these are smooth curves (Bezier curves), but we can still get pointy edges (like the tip of the Q).

Note that these are smooth curves (Bezier curves), but we can still get pointy edges (like the tip of the Q).

Splines

Splines are a function piecewise defined by polynomials. When splines connect, they're very smooth.

An example of a spline.

An example of a spline.


Cubic Hermite Interpolation

Let's start by looking at things in 1D. If we want to draw a smooth curve over this signal, how do we do it? We have a couple of different options.

We don't want this...it doesn't look very good.

We don't want this...it doesn't look very good.

This is what we want! A smooth curve over the signal.

This is what we want! A smooth curve over the signal.

This also doesn't capture a smooth curve over the points.

This also doesn't capture a smooth curve over the points.

The idea: take the position (beginning and end of the curves) and the scalar tangents of the curve at those points, and fit the smooth curve using those control points.

The idea: take the position (beginning and end of the curves) and the scalar tangents of the curve at those points, and fit the smooth curve using those control points.

To model our line, we use a cubic polynomial. Why is this cubic? We have four knowns (input constraints) and four unknowns .

These are our constraints (our equations) for our linear systems. We can write this as a matrix (below).

These are our constraints (our equations) for our linear systems. We can write this as a matrix (below).

We can solve this using an inverse, or some form of row reduction, to solve for the polynomial coefficients.

We can solve this using an inverse, or some form of row reduction, to solve for the polynomial coefficients.

Let's re-write the equation in polynomial form. Now, what are the different ways of interpreting this system of equations?

Let's re-write the equation in polynomial form. Now, what are the different ways of interpreting this system of equations?