B-Spline Study Notes(open)
More material: https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-basis.html
One of the challenges in my current project is to realize protein structures in ribbon diagram form.
To create smooth curves with continuity on protein structures, it was noted in the two papers by Mike Carson, Algorithm for ribbon models and proteins and Ribbon models of macromolecules, that B-Spline needs to be applied for such visualization.
Never really touched B-Spline related knowledge, I decided to study from the very root.
I'm pasting my study notes here as archives.
A really good tutorial I found on YouTube:
To study B-Spline, I start from learning Bezier Curve:
A Bezier curve is a parametric curve that uses the Bernstein Polynomials as a basis. A Bezier curve of degree n (order n+1) is represented by:
1. bi here stands for the control point (Bezier Points) coordinates.
Example above: A cubic Bezier(4 control points) curve
B-Spline is jointed Bezier curves : A k degree B-Spline Curve defined by n + 1 control points will consist of n-k+1 Bezier Curves
To be a B-Spline, the Bezier curves must have the triple continuity(C0, C1, C2)
The know vector is any sequence of numbers provided that each one is greater than or equal to the preceding one. The spacing between each knot in the vector determines the shape of the B-Spline curve.
The number of knots in a knot vector is related to the degree k and the number of control points n + 1 by: m = k+n+1(For example, a cubic B-Spline defined using 5 control points requires m = 3+4+1 = 8)
A Beizer curve with open uniform knot vector starts and ends at the first and last control points.
Comparison of basis function graphs with different kinds of knot vectors: