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}$.

Note

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.

Info

A knot is only removable if it can be removed from all columns or rows.


Combining Curves and Surfaces

To be done.