./features/convert to Bézier
Download Features Source code Forum Ask for support

Convert curves and surfaces to Bézier

Analysis Situs provides a set of functions for converting curves and surfaces to give them the desired analytical properties while minimizing geometrical distortion. One such function is convert-to-bezier, which takes a curve or a surface as input and attempts to simplify its analytical description in order to convert it to a piecewise Bézier.

According to the theory [Piegl & Tiller, 1995], a B-spline curve or a surface can be turned into a piecewise Bézier representation by increasing the multiplicities of all knots until G0 continuity is achieved. As a result of this repetitive knot insertion, the initial geometry falls apart onto the desired Bézier pieces. This conversion, however, does not entail modifying the polynomial degrees of the Bézier segments used.

Furthermore, in general, degree reduction is known to deform the shape of a spline curve/surface (see A5.11 from [Piegl & Tiller, 1995]). As a result, Analysis Situs does not guarantee that the modified geometry fits perfectly within the input shape after conversion. Nonetheless, the obtained deviation is measured and returned by the Tcl function explicitly:

> puts "Max conversion error: [convert-to-bezier s]"

The conversion algorithm can process not only freeform surfaces but also analytical planes, conical surfaces, cylinders, and so on. The analytical surfaces are first converted to splines and then handled in the same way as any other spline entity.

You can read more about the implementation details behind the convert-to-bezier command on our blog.