Geometry & CAGD
B-splines: local control, and why CAD uses them
With many points, a single Bézier becomes unusable. B-splines fix that by making each point influence only a neighbourhood.
Take the Bézier idea and raise the point count. With 10 control points you get a degree-9 polynomial, and something unpleasant happens: every point influences every part of the curve. Drag one point at the far left and the far right end moves too. That is called *non-local* control, and it makes high-degree Béziers useless for design.
A B-spline keeps the same "weighted blend of nearby points" idea but makes the blend depend on a knot vector — a non-decreasing list of parameter values. Each control point has a limited interval where its weight is non-zero. That gives local control.
// Degree p=3 (cubic). Knot vector for a clamped curve with n+1 points:
// [0,0,0,0, u1, u2, ..., un-3, 1,1,1,1]
// ^-- repeated p+1 times at each end = clamped: curve touches both ends
// Cox-de Boor recursion — the standard way to evaluate it
// Base: N_{i,0}(u) = 1 if u_i <= u < u_{i+1} else 0
// Recurse: N_{i,p}(u) = ((u-u_i)/(u_{i+p}-u_i)) * N_{i,p-1}(u)
// + ((u_{i+p+1}-u)/(u_{i+p+1}-u_{i+1})) * N_{i+1,p-1}(u)
//
// The curve is then: C(u) = sum_i N_{i,p}(u) * P_iTwo properties explain why B-splines are the industry default:
Local support. Moving one control point changes only a bounded stretch of the curve. You can edit a car door without disturbing the roof.
Convex hull property. Each segment lies inside the hull of its neighbouring points. That makes collision and intersection tests tractable — you get cheap bounds for free.
What problem does a knot vector solve?
Which property makes collision tests cheap?
Knot vector
A non-decreasing parameter list that controls how control points blend.
Local support
One control point affects only a bounded stretch.
Cox–de Boor
The standard recursion for evaluating B-spline basis functions.
Clamped
Knots repeated at the ends, so the curve touches the first and last points.
Review cards
Knot vector
A non-decreasing parameter list that controls how control points blend.
Local support
One control point affects only a bounded stretch.
Cox–de Boor
The standard recursion for evaluating B-spline basis functions.
Clamped
Knots repeated at the ends, so the curve touches the first and last points.
Sources for this lesson
Below are the references, editions and original links for further reading and checking.
BookThe NURBS Book
Les Piegl, Wayne Tiller
2nd edition, Springer
NURBS 的标准参考,含可直接改写成 C 的伪代码。CAD 内核背后的算法基本都在这。
CourseCAGD — Computer Aided Geometric Designfree
CSE 274, UC San Diego(Albert Chern)
最新开课学期(讲义与作业公开)
B 样条与 NURBS 的课堂讲义,把 Cox–de Boor 递推讲得比教材更直观。
DocsAlgorithms for B-spline Curvesfree
K. M. Patrikalakis, T. Maekawa, W. Cho
MIT Hyperbook, section 1.4.3
Explains shape-preserving knot insertion and how knot multiplicity affects continuity after control points are edited.
CourseDiscrete Differential Geometry: An Applied Introductionfree
Keenan Crane, CMU 15-458 / 15-858
最新学期(讲义 + 视频 + 编程作业,全部公开)
几何处理方向最好的课。讲义 PDF、C++/JS 作业框架、视频全免费;作业含离散曲率、曲面光顺、参数化、测地距离等。
Where this is heading
Discrete Differential Geometry: An Applied Introduction
最新学期(讲义 + 视频 + 编程作业,全部公开)
几何处理方向最好的课。讲义 PDF、C++/JS 作业框架、视频全免费;作业含离散曲率、曲面光顺、参数化、测地距离等。
DDG course site (assignments & readings)
持续更新
作业与阅读材料站点,可对照讲义逐周跟做。
Lights up these nodes in the hub:g-03 · g-04 · g-05