Kochanek–Bartels spline
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 di+1 defined by
- <math>\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)
</math>
- <math>\mathbf{d}_{i+1} = \frac{(1-t)(1+b)(1-c)}{2}(\mathbf{p}_{i+1}-\mathbf{p}_{i}) + \frac{(1-t)(1-b)(1+c)}{2}(\mathbf{p}_{i+2}-\mathbf{p}_{i+1})
</math>
where...
| Template:Mvar | tension | Changes the length of the tangent vector | |
| Template:Mvar | bias | Primarily changes the direction of the tangent vector | |
| Template:Mvar | continuity | Changes the sharpness in change between tangents |
Setting each parameter to zero would give a Catmull–Rom spline.
The source code of Steve Noskowicz in 1996 actually describes the impact that each of these values has on the drawn curve:<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>
| 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 generate these splines in a BASIC dialect.
References
External links
- {{#invoke:citation/CS1|citation
|CitationClass=web }}