Theory#

SplineBox implements uniform splines of the form

(1)#\[r(t) = \sum_0^{M-1} c[k]\phi(t-k),\]

where

  • \(r: \mathbb{R} \mapsto \mathbb{R}\) is a piecewise-continuous function referred to as spline

  • \(t \in \mathbb{R}\) is a continuous parameter

  • \(c[k] \in \mathbb{R}, k = 0,...,M-1\) are coefficients referred to as control points

  • \(\phi: \mathbb{R} \mapsto \mathbb{R}\) is a function referred to as basis

One can intuitively think of \(r\) being built by summing \(M\) copies of \(\phi\) centered at integer locations \(k=0,...,M-1\), each of them scaled by corresponding weights \(c[k]\). We refer to each \(t \in [k, k+1[, k=0,...,M-1\) as intervals.

The function \(r\) can be made periodic by either \(M\)-periodizing the sequence of \(\{ c[k] \}_{k=0,...,M-1}\) such that \(c[0]=c[M]\), or by \(M\)-periodizing \(\phi\) and replacing it in (1) by its periodized version

(2)#\[\phi_M(t) = \sum_{i\in\mathbb{Z}} \phi(t-Mi).\]

The model (1) allows building 1D functions, planar parametric curves, and parametric curves embedded in 3D with the following modifications:

  • \(c[k] \in \mathbb{R}\) results in \(r: \mathbb{R} \mapsto \mathbb{R}\) (function);

  • \(\mathbf{c}[k] \in \mathbb{R}^2\) results in \(\mathbf{r}: \mathbb{R} \mapsto \mathbb{R}^2\) (planar parametric curve);

  • \(\mathbf{c}[k] \in \mathbb{R}^3\) results in \(\mathbf{r}: \mathbb{R} \mapsto \mathbb{R}^3\) (parametric curve in 3D).