Cardinal Splines Part 3
Continuing from part 2 of this series, the tension in a Cardinal spline is controlled by the sparameter. Given a fourtuple of control points or knots,
[P_{a}, P_{b}, P_{c}, P_{d}]
cubic Hermite interpolation is applied with starttangent s(P_{c} – P_{a}) and endtangent s(P_{d} – P_{b}) .
Theoretically, s could vary from zero to positive infinity. A very long tangent vector, indicated by a large svalue causes the curve to follow the tangent very closely in and out of the join point. A very small tangent vector, indicated by a small svalue, causes the curve to approach and leave the join point more like a straight line.
Intuitively, this is the opposite of how we expect tension to behave. Larger tension should ‘pull’ the curve closer to a straightline interpolation of the knots, with exactly straight lines as a limiting case. This gives rise to the convention of a formal tension parameter, T, that is inversely related to s.
The typical convention is to define s = (1T)/2 or T = 1 – 2s. Note that the zerotension case corresponds to s = 1/2 or a relatively ‘loose’ movement into and out of each join. This special case corresponds to the CatmullRom spline. For this reason, the CR spline is sometimes called the zerotension or neutral Cardinal spline.
The tension parameter will be discussed in more detail in subsequent posts in this series. Tangent vectors are arbitrary at the initial and terminal knots, just as with the CatmullRom spline. Fortunately, there are several methods for automatically assigning these tangents. The CR spline in Degrafa implements two methods; point duplication and point reflection.Â Line segment reflection can be added as a third option. It is also possible to allow designers to set these tangents interactively.
Local control via knot placement, tension control, and adjustment of initial/terminal tangent vectors provides artists with a variety of methods to design specific curves using Cardinal splines.

October 6, 2009 at 7:03 amCardinal Splines Part 4 « The Algorithmist