12
$\begingroup$

i am currently learning about bezier curves and splines in computergraphics. Where is the difference between a b-spline curve and a curve that consists bezier curves as segments. I have read in a lot of sources that the b-spline has better properties, that you dont change the whole curve but just local segements of it while manipulating control points. With bezier segments, you change the whole curve. Is that right?

$\endgroup$

2 Answers 2

10
$\begingroup$

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.

$\endgroup$
4
  • $\begingroup$ Good answer, but converted how? Given the control points of a B-spline (eg D3), how to convert to a cubic Bezier (eg SVG)? $\endgroup$
    – david.pfx
    Sep 30, 2020 at 7:17
  • $\begingroup$ 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 (pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/…) for more details. $\endgroup$
    – fang
    Oct 1, 2020 at 19:04
  • $\begingroup$ 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). $\endgroup$
    – david.pfx
    Oct 3, 2020 at 3:50
  • $\begingroup$ @david.pfx That would be off-topic for this site. Maybe you'll have more luck if you ask it in StackOverflow. $\endgroup$
    – syockit
    Oct 12 at 8:17
7
$\begingroup$

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.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .