next up previous
Next: Fairing of B-Spline Curves Up: Fairing of B-Spline Curves and Surfaces Previous: Fairing of B-Spline Curves and Surfaces

Introduction

If a designer constructs a B-spline curve or surface with the help of his CAD system or any other application the result might be non-smooth. To avoid this affect, which can originate from e.g. digitizing errors of data points, two different principles are generally used. The first one incorporates a suitable fairness criterion into the interpolation or approximation process; for more informations see [4,17]. The second one is to separate the construction and the fairing process which again can be subdivided into two principles: global methods as described in [20,21,22] and local, iterative methods like [10,12,13,26,27,29]. Our method we are going to describe in the next sections also belongs to the second principle.

Although the fairness of a curve or surface can only be described in a subjective manner the following two definitions are very common in literature (see also [28]): a (planar) curve is smooth if it minimizes the strain energy of a thin elastic beam described by

\begin{displaymath}
E = \int \kappa^2(s)\;ds\;\;\;,
\end{displaymath}
(1)

where $\kappa$ represents the curvature of the curve. A surface is smooth if it minimizes the potential energy of a thin elastic plate (thin-plate energy) given by
\begin{displaymath}
\Pi_P = \int\!\!\! \int_S
a \left( \kappa_1^2 + \kappa_2^2\right) + 2(1-b)\;\kappa_1 \kappa_2 \;dS\;\;\;,
\end{displaymath}
(2)

where $\kappa_1$ and $\kappa_2$ are the principle curvatures of the plate and the factors $a, b$ are constants depending on the material (see [3]).

But both fairing criteria lead to a non-linear problem which has to be solved with the help of numerical tools whereas explicit solutions cannot be given in general. Following this, both criteria are linearized in most fairing algorithms. Concerning curves we assume that the parameter $t$ of the curve represents the arc length. So, the simpler integral

\begin{displaymath}
E_2 = \int \left({\bf x}''(t)\right)^2\;dt
\end{displaymath}
(3)

is minimized instead. Furthermore, we do use the third derivative also described in [17,24]. If the curve is parameterized with respect to the arc length it can be shown that this integral is equivalent to the integral over $(\dot{\kappa})^2 + \kappa^2 (\kappa^2 + \tau^2)$.

In case of given surfaces the functional

\begin{displaymath}
\Pi = \int \!\!\! \int_A
{\bf X}_{uu}^2 + 2\;{\bf X}_{uv}^2 + {\bf X}_{vv}^2 \;du\,dv
\end{displaymath}
(4)

is a good approximation of (2) if the parameterization of the surface is nearly isometric (and by choosing $a=1$ and $b=0$). More details about this linearization can be found in [14]. But for general curves or surfaces, (3) and (4) are far away from being a good approximation and, therefore, could produce strange results. In [23] some effects are pointed out for curves.

Another functional suggested in [15] is

\begin{displaymath}
G = \int \!\!\! \int_A ({\rm grad}\;{\rm div}\;{\rm grad}\;{\bf X})^2 \;du\,dv
\end{displaymath}
(5)

or the following from [1]
\begin{displaymath}
H = \int \!\!\! \int_A {\bf X}_{uuu}^2 + {\bf X}_{vvv}^2 \;du\,dv\;\;\;.
\end{displaymath}
(6)

In this paper a B-spline curve ${\bf x}(t)$ of general order $k$ with the knot sequence $T=(t_j)_{j=0}^{n+k}$, which is always described by

\begin{displaymath}
{\bf x}(t) = \sum_{i=0}^n {\bf d}_i \cdot N_{i,k}(t)
\;\;\; , \;\;\;t \in [t_{k-1}, t_{n+1}]
\end{displaymath}
(7)

(see [11,19] for details), or a B-spline surface ${\bf X}(u,v)$ of order $(k,l)$ with the knot sequences $U=\{u_i\}_{i=0}^{m+k}$ and $V=\{v_j\}_{j=0}^{n+l}$, which is described by
\begin{displaymath}
{\bf X}(u,v) = \sum_{i=0}^m \sum_{j=0}^n\;{\bf d}_{ij} \cdot...
...;\;\;(u,v) \in [u_{k-1},u_{m+1}]\times[v_{l-1},v_{n+1}]\;\;\;,
\end{displaymath}
(8)

should be faired in the following way: by modifying only one control point at a time and keeping all others fixed, we want to minimize the (linearized) fairness functional. This idea had been successfully used before in [8] for fairing polylines.

To smooth a whole curve or surface the following points have to be done:

  1. Find the control point which has to be changed.
  2. Change the control point to a location in such a way that the new curve or surface minimizes the fairness criterion and fulfills a given distance tolerance.
  3. Follow step 1 and 2 so often as a suitable criterion to stop is fulfilled.

In the first part of this contribution we want to describe our method for fairing B-spline curves (c.f. [7]) and Bézier-spline curves. A possible solution for fairing rational B-spline curves will also be discussed. The second part contains the extension of this method to surfaces (c.f. [16]). In both parts the benchmark curves and surfaces of the workshop in Lambrecht and some other examples are treated. The results are visualized in some pictures.