You might want to try working with Bsplines rather than Hermites or Beziers. A Bspline is a non-interpolating spline, which means that the curve does not pass through the influence points or "knots", but the resulting piece-wise cubic curve is quite smooth - it has continuity of second derivative (ie: C2) between successive spline segments, not just continuity of derivative (ie: C1).
As we discussed in class, Bsplines are built up from successive "blurring" in the influence of knot points. Mathematically this is done by successive convolutions of pulse functions to make blur kernels that are ever wider and have ever greater continuity: Pulse, triangle, piecewise quadratic bump, piecewise cubic bump, etc.
When these blur functions are used as weights on knot values, you get the different orders of Bpsline: A zero order Bspline is just a piecewise constant function - so any function evaluation is influenced by only one knot. An order one Bspline is piecewise linear, and each evaluation is influenced by two successive knots. Similarly order two is piecewise quadratic and each evaluation is influenced by three successive knots; order three is piecewise cubic and each evaluation is influenced by four successive knots.
As we discussed in class, the Bspline that is generally used is the cubic, in which each four successive knots P_{i-1}, P_{i}, P_{i+1}, P_{i+2} are used to control the value of the spline curve between i and i+1. Converting from these four knot values to four cubic coefficients [a b c d], where at^{3}+bt^{2}+ct+d, is given by:
a | -1 | 3 | 3 | -3 | 1 | P_{i-1} | ||||
---|---|---|---|---|---|---|---|---|---|---|
b | ← 1/6 | 3 | 3 | -6 | 3 | 0 | P_{i } | |||
c | -3 | 3 | 0 | 3 | 0 | P_{i+1} | ||||
d | 1 | 3 | 4 | 1 | 0 | P_{i+2} |