If so, do I lose any feature of the curve?
1 Answers
A b-spline curve can be regarded as a chain of Bezier curves, joined end-to-end.
In the special case where the "chain" consists of just one Bezier curve, the conversion is trivial/unnecessary, of course.
If the chain has more than one Bezier curve, then conversion to a single Bezier curve can not be done exactly (in general). You have two choices: either you can construct a single Bezier curve that approximates the b-spline curve, or you can convert the b-spline curve (exactly) to a collection of Bezier curves.
If you want to do approximation, you'll need to tell us how you will judge the quality of the approximation. Then we can suggest suitable methods.
If you want to convert to multiple Bezier curves, then you can do this by knot insertion. If your b-spline curve has degree $m$, then you just add knots until each knot has multiplicity $m$. The control points of the new refined b-spline curve are then the control points of its Bezier "pieces". The algorithm is often known as "Boehm's Algorithm", after Wolfgang Boehm.
- 43,483
- 3
- 61
- 122
-
Can you cite the source? – vinipsmaker May 07 '13 at 01:03
-
Almost any book on b-splines. For example: http://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node18.html – bubba May 07 '13 at 03:26
-
The original paper is: W. Boehm, Generating the Bezier points of B-spline curves and surfaces, Computer Aided Design 13(6) (1981), 365-366 – bubba May 07 '13 at 03:31
-
Shouldn't it be adding 'knots until each knot has multiplicity m+1'? A cubic B-spline has degree 3, each segment Bezier should have 4 knots = 0, 4 knots =1. – June Wang May 21 '20 at 03:17
-
In the cubic case, if you just increase each knot multiplicity to 3, you'll get all the control points you need to construct a Bezier curve for each segment. You can increase to 4, if you want, but this will just mean that the control points at shared end-points of segments will be repeated. – bubba May 21 '20 at 08:37