I am currently learning about Bezier curves and splines in computer graphics. What is the difference between a B-spline curve and a curve that consists of Bezier curves as segments? I have read in many sources that B-splines have better properties because you don't change the whole curve but just local segments of it while manipulating the control points. With Bezier segments, you change the whole curve. Is that correct?
-
Could you clarify what you mean by "Bezier segments" and "B-slines", even in a pragmatic sense, for example providing examples from computer graphics applications? As I understand it, there are at least three things you could mean: (individual) Bezier curves, Composite Bézier curves (a.k.a poly-Bezier curves) (that sounds a lot like "a curve that consists of Bezier curves" to me!) and actual B-splines (basis spline). – cubuspl42 Mar 21 '25 at 15:44
2 Answers
There is no difference between a B-spline curve and a curve that consists of Bezier curves as segments because a B-spline curve is a curve that consists of Bezier curves as segments. However, there is indeed differences between a B-spline curve and a Bezier curve. For Bezier curves, changing any control point will affect the shape of entire curve. For B-spline curves, changing any control point will only affect (degree+1) Bezier segments.
B-spline curve is not the only type of curve that consists of Bezier curves as segments. Catmull-Rom spline and cubic Hermite spline are two such examples and both of which can be converted into the form of B-spline curves.
- 3,630
-
Good answer, but converted how? Given the control points of a B-spline (eg D3), how to convert to a cubic Bezier (eg SVG)? – david.pfx Sep 30 '20 at 07:17
-
In general case, you cannot exactly convert a B-spline curve into a Bezier curve as the former is consists of multiple Bezier segments. However, you can subdivide the B-spline curve at its knot points so that it will be "broken up" into multiple Bezier curves. Refer to this link (https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/subdivision.html) for more details. – fang Oct 01 '20 at 19:04
-
Tnx: I know that link well, but that's maths and I need code. Given B-spline curve parameters (from another app), how to convert that to Bezier (for SVG or Windows Geometry). – david.pfx Oct 03 '20 at 03:50
-
@david.pfx That would be off-topic for this site. Maybe you'll have more luck if you ask it in StackOverflow. – syockit Oct 12 '23 at 08:17
-
@fang The OP clearly used terms intuitively. Figuring out what they meant is part of the challenge here, in my opinion. Why did you assume that by "a curve that consists of Bezier curves as segments" they don't mean Composite Bézier curves (a.k.a "Bézier splines"), which are greatly popular in computer graphics? – cubuspl42 Mar 21 '25 at 15:48
-
-
"There is no difference between a B-spline curve and a curve that consists of Bezier curves as segments [...]". If "a curve that consists of Bezier curves as segments" meant composite Bezier curve (a.k.a. Bezier spline, a.k.a. polybezier), that wouldn't be true, as there are crucial differences between a composite Bezier curve and a B-spline, aren't they? – cubuspl42 Mar 22 '25 at 09:10
-
@cubuspl42 Geometrically there is no difference. One can converted to the other without approximation. – fang Mar 22 '25 at 15:09
-
Thank you, I didn't know that. Still, in my opinion, we are stretching the definition of "the same" to its limit. These are arguments towards stating that B-Splines and poly-Beziers are two different (although related) types of curves: they react to control points in a completely different way (isn't how curves react to control points a giant topic in curve research?), they have separate Wikipedia articles, they are discussed separately in tutorials and books, "nearly everyone" [citation needed] considers them different (but somehow related) types of curves. – cubuspl42 Mar 22 '25 at 17:03
-
Arguments toward that they are exactly the same type of curves: They can be converted to each other without approximation. I'll end the discussion here, respecting your differing perspective, but I still think that your answer is purely theoretical and would greatly benefit at least from stating that fact. – cubuspl42 Mar 22 '25 at 17:03
There is one big difference:
B-splines are piecewise polynomials. The area of validity for each piece is limited by so called "knot points".
Usually some constraits are put at knot points, for example that we should have a continous curve, maybe also first and second derivatives should be the same there.
Bezier curves are instead global polynomials with a set of points $\{{\bf P}_0,\cdots,{\bf P}_N\}$ to "aim" for.
$$\sum_{k=0}^N \left(\begin{array}{c}N\\k\end{array}\right) (1-t)^{n-k}t^k{\bf P}_k$$
So I suppose you are right in some sense.
- 26,534