Knot Removal
The removal of knots from a knot vector of a curve or a surface without changing the curve or the surface is a fundamental operation. It is of use for [1, p. 180]:
- Converting curves and surfaces in power basis form to a B-spline representation
- Obtaining most compat representation of a curve or surface
- Combining curves and surfaces
Removing Knots from a Curve
For a given curve $\bm{c}(u) = \sum_{i=1}^N B_{i,p}(u) \bm{p}_i$ defined on the knot vector
\[U = \{u_1, \dots, u_M\}\]
the knot $\bar{u}= u_r$ with multiplicity $s$ is $t$ times ($1 \leq t \leq s$) removable if the curve has an equivalent representation
\[\bm{c}(u) = \sum_{i=1}^{\bar{N}} \bar{B}_{i,p}(u) \bar{\bm{p}}_i \,,\]
where and $\bar{N} = N-t$ and the $\bar{B}_{i,p}$ are the $p$th degree basis functions defined on the trimmed knot vector $\bar{U}$.
Hence, there are three tasks to fulfill:
- determining the position index $r$ and the resulting $\bar{U}$ for a given $\bar{u}$
- determine whether the knot is actually removable and how many times
- determining the $\bar{\bm{p}}_i$
While the first one is a standard task, the second and third one can be achieved as follows [1, p. 183]:
Removing a Knot Once
For $t=1$, potentially $n=p-s+1$ control points have to be destroyed and replaced by $n-1$ new control points.
To see whether the knot is actually removable, the points
\[\bm{p}^1_i = \frac{\bm{p}_i^0 - (1-\alpha_i)\bm{p}_{i-1}^1}{\alpha_i} \quad \text{for} \quad r-p \leq i \leq 0.5(2r - p - s -1)\]
and
\[\bm{p}^1_j = \frac{\bm{p}_j^0 - \alpha_j\bm{p}_{j+1}^1}{1 - \alpha_j} \quad \text{for} \quad 0.5(2r - p - s + 2) \leq j \leq r -s\]
are computed with
\[\alpha_k = \frac{u_r - u_k}{u_{k+p+1}- u_k} \,.\]
Now, either
\[\bm{p}_i^1 = \bm{p}_j^1\]
has to hold, or
\[\bm{p}_i^0 = \alpha_i \bm{p}_i^1 + (1 - \alpha_i) \bm{p}_j^1\]
in order for the knot to be removable.
Removing a Knot Multiple Times
For $t \geq 1$ the points
\[\bm{p}^t_i = \frac{\bm{p}_i^{t-1} - (1-\alpha_i)\bm{p}_{i-1}^{t}}{\alpha_i} \quad \text{for} \quad r-p -t +1 \leq i \leq 0.5(2r - p - s - t)\]
and
\[\bm{p}^t_j = \frac{\bm{p}_j^{t-1} - \alpha_j\bm{p}_{j+1}^t}{1 - \alpha_j} \quad \text{for} \quad 0.5(2r - p - s + t + 1) \leq j \leq r -s + t - 1\]
are computed with
\[\alpha_i = \frac{u_r - u_i}{u_{i+p+t}- u_i} \]
and
\[\alpha_j = \frac{u_r - u_{j-t+1}}{u_{j+p+1}- u_{j-t+1}} \,.\]
Removing Knots from a Surface
Removing knots from a surface corresponds to applying the knot removal algorithm to all columns or rows.
A knot is only removable if it can be removed from all columns or rows.
Combining Curves and Surfaces
To be done.