从普通 B 样条曲线到 NURBS:权重、齐次坐标与透视投影 #
在学习 B 样条曲线之后,一个自然的问题是:
为什么还需要 NURBS?它和普通 B 样条有什么区别?
从公式上看,NURBS 似乎只是给每个控制点增加了一个权重;但从几何上看,它有一个更加深刻的解释:
NURBS 曲线可以看成高一维齐次空间中的普通 B 样条曲线,经过透视投影后得到的曲线。
理解这句话,基本就掌握了从普通 B 样条过渡到 NURBS 的核心。
1. 普通 B 样条曲线 #
一条 p 次 B 样条曲线可以写成
C(u)=i=0∑nNi,p(u)Pi,其中:
- Pi 是控制点;
- Ni,p(u) 是 p 次 B 样条基函数;
- 节点向量决定基函数在参数域中的分布。
B 样条基函数满足单位分解性质:
i=0∑nNi,p(u)=1.因此,曲线上的点可以理解为控制点的一个随参数变化的加权平均:
C(u)=N0,p(u)P0+N1,p(u)P1+⋯+Nn,p(u)Pn.普通 B 样条具有局部控制、凸包性、连续性可控等优点,非常适合自由曲线设计。
但它有一个重要限制:
普通多项式 B 样条不能精确表示圆、椭圆等圆锥曲线,只能进行近似。
这也是引入有理 B 样条的主要原因之一。
2. 从普通 B 样条到有理 B 样条 #
为了增强 B 样条的表示能力,我们为每个控制点 Pi 增加一个权重 wi。
有理 B 样条曲线定义为
C(u)=∑i=0nNi,p(u)wi∑i=0nNi,p(u)wiPi.定义有理基函数
Ri,p(u)=∑j=0nNj,p(u)wjNi,p(u)wi,曲线就可以重新写成
C(u)=i=0∑nRi,p(u)Pi.它和普通 B 样条形式非常相似,只是原来的多项式基函数 Ni,p(u) 被有理基函数 Ri,p(u) 替代了。
有理基函数仍满足
i=0∑nRi,p(u)=1.当所有权重都相等时,例如
wi=1,有
Ri,p(u)=Ni,p(u),于是有理 B 样条退化为普通 B 样条。
因此可以说:
普通 B 样条是 NURBS 的特殊情况。
3. “有理”是什么意思 #
这里的“有理”来自英文 rational,指的是数学中的有理函数,而不是日常语言中的“合理”。
有理函数是两个多项式的比值,例如
f(u)=Q(u)P(u).在每个节点区间内,B 样条基函数都是多项式,因此有理 B 样条的各个坐标可以表示为两个分段多项式的比值。
例如二维曲线可以写成
x(u)=∑iNi,p(u)wi∑iNi,p(u)wixi, y(u)=∑iNi,p(u)wi∑iNi,p(u)wiyi.这就是“有理 B 样条”名称的来源。
分母
W(u)=i∑Ni,p(u)wi使曲线不再只是分段多项式曲线,而成为分段有理函数曲线。
4. 权重的直观意义 #
权重可以直观地理解为控制点对曲线的“吸引力”。
在其他条件不变的情况下:
- 增大 wi,曲线通常会更加靠近控制点 Pi;
- 减小 wi,曲线通常会远离控制点 Pi;
- 所有权重相等时,曲线就是普通 B 样条。
但权重并不是简单地移动控制点。
有理基函数为
Ri,p(u)=∑jNj,p(u)wjNi,p(u)wi.改变某个权重 wi 时,不仅会改变该控制点对应的分子,还会改变所有基函数共同使用的分母。
所以权重改变的是各个控制点之间的相对贡献。
5. 齐次坐标:理解 NURBS 的关键 #
仅仅把权重理解为“吸引力”还不够。NURBS 更本质的解释来自齐次坐标。
假设二维控制点为
Pi=(xi,yi),它的权重为 wi。
把它提升到三维齐次空间中:
Piw=(wixi,;wiyi,;wi).也可以写成
Piw=(wiPi,wi).注意,齐次点
(wixi,wiyi,wi)投影回二维后仍然是
(wiwixi,wiwiyi)=(xi,yi).因此,权重不会改变控制点在原空间中的位置。
它只是为同一个点选择了一个不同的齐次表示。
6. 一个欧氏点对应齐次空间中的一条射线 #
在齐次空间中,同一个欧氏点有无数种表示。
例如二维点
(2,3)可以表示为
(2,3,1),也可以表示为
(4,6,2),或者
(20,30,10).因为投影后都有
(12,13)=(24,26)(1020,1030)(2,3).从几何上说,这些齐次点都位于从原点出发的同一条射线上。
因此,一个欧氏点对应的并不是齐次空间中的单个点,而是一条射线:
λ(x,y,1).权重 wi 的作用,就是在这条射线上选择齐次控制点
(wixi,wiyi,wi).当 wi 增大时,该齐次控制点沿射线远离原点;当 wi 减小时,它沿射线靠近原点。
7. 在齐次空间中构造普通 B 样条 #
有了齐次控制点之后,可以直接在高一维空间中构造一条普通 B 样条:
Cw(u)=i∑Ni,p(u)Piw.把
Piw=(wiPi,wi)代入,得到
Cw(u)=i∑Ni,p(u)(wiPi,wi).逐坐标展开:
Cw(u)=(i∑Ni,p(u)wiPi,;i∑Ni,p(u)wi).记作
Cw(u)=(A(u),W(u)),其中
A(u)=i∑Ni,p(u)wiPi, W(u)=i∑Ni,p(u)wi.这里需要特别注意:
分母 ∑iNi,p(u)wi 并不是人为添加的,它正是高维 B 样条曲线点的最后一个坐标。
8. 什么是透视投影 #
现在需要把齐次空间中的曲线点投影回原来的欧氏空间。
对于齐次点
(A,W),投影结果为
WA.例如,从三维齐次空间投影到二维时:
(X,Y,W)⟼(WX,WY).从四维齐次空间投影到三维时:
(X,Y,Z,W)⟼(WX,WY,WZ).这个过程叫作透视投影,或者中心投影。
9. 透视投影的几何意义 #
考虑齐次点
(X,Y,W).从原点出发,经过该点的射线可以写成
λ(X,Y,W).我们希望找到这条射线与平面
W=1的交点。
交点的最后一个坐标必须满足
λW=1.因此
λ=W1.代回射线方程:
λ(X,Y,W)=(WX,WY,1).去掉最后一个坐标 1,得到二维欧氏点
(WX,WY).所以,“除以最后一个坐标”的几何意义是:
从原点向齐次点作一条射线,计算这条射线与平面 W=1 的交点。
这与针孔相机中的透视投影具有完全相同的数学形式。
10. 为什么投影后出现 NURBS 的分母 #
齐次空间中的普通 B 样条为
Cw(u)=(i∑Ni,p(u)wiPi,;i∑Ni,p(u)wi).透视投影要求用前面的坐标除以最后一个坐标,因此
C(u)=∑iNi,p(u)wi∑iNi,p(u)wiPi.这正是有理 B 样条曲线的定义。
因此,有理基函数中的分母
i∑Ni,p(u)wi来自齐次曲线在参数 u 处的最后一个坐标。
它不是额外引入的归一化项,而是透视投影自然产生的结果。
11. 一个只有两个控制点的例子 #
为了直观理解这个过程,考虑一维中的两个控制点:
P0=0,P1=10.在某个参数位置,两个基函数的值为
N0=0.5,N1=0.5.控制点权重为
w0=1,w1=3.11.1 提升到齐次空间 #
对于一维点 Pi,齐次控制点写成
Piw=(wiPi,wi).因此
P_0^w = # (1\cdot0,1) (0,1), P_1^w = # (3\cdot10,3) (30,3).虽然第二个齐次控制点是 (30,3),但它投影回去仍然是
330=10.所以权重没有改变控制点 P1 的原始位置。
11.2 在齐次空间中进行普通插值 #
使用基函数值 N0=N1=0.5:
Cw=0.5P0w+0.5P1w.代入齐次控制点:
Cw=0.5(0,1)+0.5(30,3).得到
Cw=(15,2).这只是齐次空间中两个控制点的普通中点。
11.3 投影回一维空间 #
从原点出发,经过点 (15,2) 的射线为
λ(15,2).为了投影到直线
W=1,需要令
2λ=1.所以
λ=21.投影点为
21(15,2)=(7.5,1).因此原来一维空间中的点是
C=7.5.
12. 为什么结果是 7.5,而不是 5 #
如果没有权重,两个控制点的普通平均为
0.5⋅0+0.5⋅10=5.加入权重之后,有理基函数变为
R0=N0w0+N1w1N0w00.5⋅1+0.5⋅30.5⋅141, R1=N0w0+N1w1N1w10.5⋅1+0.5⋅30.5⋅343.所以
C=R0P0+R1P141⋅0+43⋅107.5.原本的系数是
0.5,0.5,经过权重和投影之后,有效系数变成了
0.25,0.75.因此结果更靠近权重较大的控制点 P1=10。
这就是“权重增大,曲线更靠近对应控制点”的数学原因。
13. 权重真正改变的是什么 #
权重不会直接改变欧氏空间中的控制点位置。
对于控制点 Pi,齐次表示为
Piw=(wiPi,wi).无论 wi 取什么正值,投影后都有
wiwiPi=Pi.权重真正改变的是控制点在齐次射线上的位置。
随后在齐次空间中进行 B 样条组合时,这些不同位置的齐次控制点会产生不同的高维曲线点。
最终,齐次曲线点所在射线的方向发生变化,投影回原空间后,曲线形状也随之变化。
因此可以这样理解:
权重不是直接移动控制点,而是改变高维插值结果的射线方向。
14. 为什么所有权重相等时会退化为普通 B 样条 #
假设所有控制点具有相同权重:
wi=w.此时有理 B 样条为
C(u)=∑iNi,p(u)w∑iNi,p(u)wPi.分子可以提出 w:
C(u)=w∑iNi,p(u)w∑iNi,p(u)Pi.由于
i∑Ni,p(u)=1,所以
C(u)=i∑Ni,p(u)Pi.这就是普通 B 样条曲线。
从齐次空间看,所有权重相等意味着所有齐次控制点都位于同一个平面
W=w上。
此时投影只产生统一缩放,不会改变各控制点之间的相对贡献。
15. 为什么 NURBS 能精确表示圆 #
普通 B 样条是一类分段多项式曲线,而圆不能被有限次多项式参数方程精确表示。
NURBS 的坐标是有理函数,例如
x(u)=W(u)P(u),y(u)=W(u)Q(u).通过适当选择控制点和权重,有理二次曲线可以精确表示圆锥曲线,包括:
例如,一个单位圆的四分之一圆弧可以由三个二次有理 Bézier 控制点表示:
P0=(1,0), P1=(1,1), P2=(0,1),其权重为
w0=1,w1=22,w2=1.普通二次 Bézier 曲线只能近似这段圆弧,而使用上述权重的有理二次 Bézier 曲线可以精确表示它。
16. 齐次坐标对算法的意义 #
齐次坐标不仅提供了一种几何解释,还带来了重要的计算优势。
在原空间中,NURBS 是一个分式:
C(u)=W(u)A(u).直接对有理函数进行各种运算通常比较复杂。
但在齐次空间中,它只是普通 B 样条:
Cw(u)=i∑Ni,p(u)Piw.因此,很多普通 B 样条算法都可以直接应用到齐次控制点上,例如:
- de Boor 曲线求值;
- 节点插入;
- 曲线细分;
- 升阶;
- 曲线拼接;
- 控制点变换。
计算完成后,再把结果投影回原空间即可。
这使得有理 B 样条在几何上更强大,同时又能复用普通 B 样条的大量理论和算法。
17. 从有理 B 样条到 NURBS #
NURBS 是 Non-Uniform Rational B-Spline 的缩写,即:
Non-Uniform Rational B-Spline.它包含四个部分。
节点向量不要求等间距,节点还可以重复。例如:
U=0,0,0,0.3,0.7,1,1,1.“非均匀”描述的是节点向量,而不是控制点分布。
Rational:有理 #
曲线坐标是分段多项式之比,并且控制点带有权重。
B-Spline:B 样条 #
曲线仍然由 B 样条基函数构造,具有局部控制、连续性可控等特征。
因此,NURBS 可以看成普通 B 样条的完整扩展:
NURBS=非均匀节点向量+B 样条基函数+控制点权重
18. 从曲线推广到曲面 #
普通 B 样条曲面为
S(u,v)=i=0∑nj=0∑mNi,p(u)Mj,q(v)Pi,j.有理 B 样条曲面为
S(u,v)=∑i∑jNi,p(u)Mj,q(v)wi,j∑i∑jNi,p(u)Mj,q(v)wi,jPi,j.它的齐次控制点为
Pi,jw=(wi,jPi,j,wi,j).处理方法和曲线完全一致:
- 把控制点提升到高一维齐次空间;
- 在齐次空间中构造普通张量积 B 样条曲面;
- 对曲面上的齐次点进行透视投影。
因此,理解了有理 B 样条曲线,也就基本理解了有理 B 样条曲面。
19. 总结 #
从普通 B 样条到 NURBS,可以用以下几个层次来理解。
普通 B 样条曲线是控制点关于 B 样条基函数的组合:
C(u)=i∑Ni,p(u)Pi.NURBS 为每个控制点增加权重:
C(u)=∑iNi,p(u)wi∑iNi,p(u)wiPi.从几何上看,每个控制点被提升到齐次空间:
Piw=(wiPi,wi).然后在齐次空间中构造普通 B 样条:
Cw(u)=i∑Ni,p(u)Piw.最后,从原点沿射线投影到 W=1:
(A,W)⟼WA.于是得到 NURBS 曲线。
整个过程可以浓缩为:
NURBS 曲线=高一维齐次空间中的普通 B 样条+透视投影这也是理解 NURBS 最重要的心智模型。
权重、分母和有理基函数都不是相互独立的技巧,而是齐次坐标和透视投影自然产生的结果。
(完)