Kochanek–Bartels spline

From Wikipedia, the free encyclopedia

In mathematics, a Kochanek-Bartels spline or Kochanek-Bartels curve is a cubic Hermite spline with tension, bias, and continuity parameters defined to change the behavior of the tangents.

Given n + 1 knots,

p0, ..., pn,

to be interpolated with n cubic Hermite curve segments, for each curve we have a starting point pi and an ending point pi+1 with starting tangent di and ending tangent si+1 defined by

\mathbf{s}_i = \frac{(1-t)(1+b)(1-c)}{2}(\mathbf{p}_i-\mathbf{p}_{i-1}) + \frac{(1-t)(1-b)(1+c)}{2}(\mathbf{p}_{i+1}-\mathbf{p}_{i})
\mathbf{d}_i = \frac{(1-t)(1+b)(1+c)}{2}(\mathbf{p}_i-\mathbf{p}_{i-1}) + \frac{(1-t)(1-b)(1-c)}{2}(\mathbf{p}_{i+1}-\mathbf{p}_{i})

where t is the tension, b is the bias, and c is the continuity parameter.

The tension parameter, t, changes the length of the tangent vector. The bias parameter, b, primarily changes the direction of the tangent vector. The continuity parameter, c, changes the sharpness in change between tangents.

Setting each parameter to zero would give a Catmull-Rom spline.

The source code found here of Steve Noskowicz in 1996 actually describes the impact that each of these values has on the drawn curve:

Tension T = +1-->Tight T = −1--> Round
Bias B = +1-->Post Shoot B = −1--> Pre shoot
Continuity C = +1-->Inverted corners C = −1--> Box corners

The code includes matrix summary needed to actually generate these splines in a BASIC dialect. Actually it is Microsoft Quick Basic v1.0 for the Mac (Steve.N).