[Math] Understanding Bezier Curves vs. Circular/Elliptical/Other Arcs

bezier-curvecirclescurves

From what I've read, you cannot construct an elliptical or circular arc with a single bezier curve (though I read maybe you can if the arc is less than 1/4 of a circle or something small like that, or maybe it approximates it close enough).

I would like to know in detail how to think about curves in the general sense, whether the curve be bezier curves or elliptical or circular arcs. I would like to apply this to computer formulas.

  1. The first part of my question is, why you can't use (cubic) bezier curves to model circular/elliptical arcs.
  2. The second part is, if you can combine multiple (cubic) bezier curves to define an elliptical/circular arc, and if so, if there is a pattern or formula to it.
  3. If there are any classes of arcs or curves that are outside of these two that these two cannot model. That would at least introduce me to the idea of what is not possible with these in terms of modeling curves.

The reason for asking is because I was initially under the assumption that all curves were about the same and that they could be modeled by bezier curves, which turns out to be incorrect.

I also just read this:

Maybe you already know this, but it's impossible to convert nurbs to bezier splines exactly because nurbs are rational functions, and bezier splines are polynomials.

I would like to know as part of this if there is any way to transform a NURBS curve into a cubic bezier curve, similar to the other above points. Not necessarily how exactly to do it, but just to know if it is possible to get started.

Best Answer

For a point on a Bézier curve of degree $n$, the $x$ and $y$ coordinates are expressed by $n$-th degree polynomial functions of some parameter $t$, say $x=a(t)$ and $y=b(t)$. If the Bézier curve is a circle of radius $1$ centered at the origin, then $[a(t)]^2 + [b(t)]^2 = 1$ for all values of $t$. The left-hand side is a polynomial of degree $2n$, so it can't be identically equal to $1$ (unless it's constant, independent of $t$, which is an uninteresting corner case). So, an exact representation of a circle is not possible.

A NURBS curve can be expressed exactly as a string of Bézier curves if and only if all of its weights are equal. If the weights are equal, then the "rational" quality of the NURBS curve degenerates, and it becomes a regular (polynomial) b-spline. In that case, you can divide the curve into its Bézier pieces using Boehm's algorithm, as described here.

There are many curves for which you can't write parametric equations in any form, so certainly not in polynomial (Bézier) form. For example, the "curve" $xy=1$, or any other curve with several disconnected pieces.

On the other hand, there is a mathematical theorem (the Weierstrass approximation theorem) that says you can approximate any continuous function as closely as you like by a polynomial. This implies that any parametric curve can be approximated as closely as you like by using a single Bézier curve of sufficiently high degree. However, in practice, instead of using a single Bézier curve with high degree, you'd typically use a string of quadratic or cubic Bézier curves strung end-to-end. In other words, you'd use a spline curve. You can look up "spline" to learn more.

You'll find lots of info if you search for "approximate a circle with Bezier curve". For example: here.

Related Question