2. NURBS曲线基础

NURBS(Non-Uniform Rational B-Spline,非均匀有理B样条)是复杂曲面插补与数控加工中最核心的数学表达形式。它通过统一框架精确描述解析曲线(如圆弧、椭圆)与自由曲线,是CAD/CAM与CNC插补器之间的“通用语言”。本章将系统拆解NURBS的五个核心要素——定义、控制点、权重、节点向量与基函数,并阐明它们如何共同决定曲线的形状、参数化与可微性,为后续插补算法(如速度规划、弓高误差控制)奠定数学基础。

NURBS曲线五要素关系图 NURBS曲线 C(u) 有理分式加权B样条 控制点 P_i 几何骨架(非插值) 凸包性与局部支撑 权重 w_i 有理调节能力 w↑ → 曲线被拉近 节点向量 U 参数域划分 非均匀/均匀/开放 B样条基 N_i,p(u) Cox-de Boor递推 局部支撑、规范性 C(u) = Σ w_i·P_i·N_i,p(u) / Σ w_j·N_j,p(u)

上图展示了NURBS曲线的核心逻辑:控制点提供几何骨架,权重赋予局部“引力”,节点向量定义参数域结构,B样条基函数负责加权组合,最终通过有理分式归一化得到曲线上的点。下面逐一深入剖析。

2.1 NURBS的数学定义与有理化动机

核心原理:NURBS曲线是B样条曲线的有理推广。其数学定义为:

C(u) = Σ_{i=0}^{n} w_i · P_i · N_{i,p}(u) / Σ_{j=0}^{n} w_j · N_{j,p}(u)

其中,P_i为控制点(二维或三维坐标),w_i为对应权重(正实数),N_{i,p}(u)为定义在节点向量U上的p次B样条基函数。分母是归一化因子,确保曲线具有仿射不变性。当所有权重w_i=1时,NURBS退化为非有理B样条;当节点向量为[0,0,0,1,1,1]且p=2时,NURBS退化为Bezier曲线。引入有理分式的根本动机是精确表达圆锥曲线——标准B样条无法精确表示圆弧,而NURBS通过权重调整即可实现。

判断方法:判断一条曲线是否为NURBS,可检查两点:①是否存在非均匀节点向量;②是否存在不等于1的权重。若两者皆无,则为普通B样条。在CAM系统中,圆弧通常以NURBS形式输出(权重为cos(θ/2)),而自由曲面则使用单位权重。

曲线类型权重节点向量精确表达圆弧
Bezier全部=1仅两端重复p+1次否
均匀B样条全部=1均匀递增否
非均匀B样条全部=1非均匀否
NURBS可≠1非均匀是
在数控插补中,NURBS的优势在于:一条NURBS曲线可替代数百段微小直线段(G01),显著降低程序体积并提高进给速度的平稳性。

2.2 控制点与权重:几何骨架与局部引力

核心原理:控制点P_i构成曲线的“控制多边形”,曲线不经过控制点(除首尾端点),而是被“拉向”控制点。权重w_i则控制曲线对第i个控制点的“亲近程度”:权重越大,曲线越靠近该控制点;权重越小,曲线越远离。当w_i→0时,该控制点对曲线无影响;当w_i→∞时,曲线退化为通过该控制点。权重还影响参数化速度——高权重区域参数变化更慢,这直接影响插补时的速度规划。

操作流程(权重调整):

  1. 在CAD中选中目标控制点,记录当前权重w_old。
  2. 设定新权重w_new,计算权重比k = w_new / w_old。
  3. 系统自动更新曲线,观察曲率变化。
  4. 若需保持曲线端点位置不变,需同时调整相邻控制点位置。

案例拆解(圆弧的NURBS表达):以90°圆弧为例,半径为R,使用3个控制点P0=(R,0)、P1=(R,R)、P2=(0,R),权重设为w0=1、w1=cos(45°)=0.7071、w2=1,节点向量U=[0,0,0,1,1,1],次数p=2。代入NURBS公式,可精确生成1/4圆弧。若将w1改为1,则曲线变为椭圆弧;改为0.5,则曲线明显偏离圆弧向内凹陷。这一特性在刀具路径优化中用于调整拐角过渡形状。

经验:在五轴加工中,调整权重可微调刀轴矢量变化率,但需注意权重变化会改变曲线弧长参数化,影响进给速度的均匀性。

2.3 节点向量:参数域的骨架

核心原理:节点向量U = [u0, u1, ..., um]是非递减实数序列,将参数域[u_p, u_{m-p}]划分为若干子区间。节点向量的分布决定了基函数的形状与曲线连续性。开放均匀节点向量(首尾节点重复p+1次)保证曲线通过首尾控制点;非均匀节点向量可在特定位置加密节点,增加局部控制能力。节点重复度k会降低曲线在该处的连续性:重复度1→C^{p-1}连续,重复度p→C^0连续(尖角)。

判断方法:给定节点向量,计算节点间隔Δu_i = u_{i+1} - u_i。若所有Δu_i相等,则为均匀节点向量;若首尾重复p+1次且内部均匀,则为开放均匀;否则为非均匀。在插补应用中,非均匀节点向量常用于在曲率突变处加密采样点。

节点向量类型示例(p=2, n=3)特点
均匀[0, 1, 2, 3, 4, 5]基函数形状相同,参数化均匀
开放均匀[0, 0, 0, 1, 2, 3, 3, 3]曲线通过首尾控制点
非均匀[0, 0, 0, 0.5, 0.5, 1, 1, 1]局部加密,可产生尖角
注意:节点向量长度必须满足 m = n + p + 1,否则基函数定义不完整,曲线无法计算。

2.4 B样条基函数:Cox-de Boor递推与性质

核心原理:B样条基函数N_{i,p}(u)由Cox-de Boor递推公式定义:

N_{i,0}(u) = 1, 若 u_i ≤ u < u_{i+1};否则为0
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)

基函数具有以下关键性质:局部支撑性(N_{i,p}(u)仅在[u_i, u_{i+p+1}]上非零)、规范性(所有非零基函数之和为1)、非负性(所有基函数≥0)、可微性(在无重复节点处为C^{p-k}连续)。这些性质保证了NURBS曲线的凸包性、局部修改性和数值稳定性。

操作流程(基函数计算):

  1. 确定参数u所在节点区间[u_k, u_{k+1})。
  2. 初始化0次基函数N_{i,0}(u)。
  3. 按递推公式逐层计算1次、2次...直至p次。
  4. 仅需计算k-p到k区间内的p+1个非零基函数。

案例拆解(三次基函数计算):设节点向量U=[0,0,0,1,2,3,3,3],p=3,计算u=1.5处的基函数。首先确定k=3(因为u在[1,2)区间)。非零基函数为N_{0,3}、N_{1,3}、N_{2,3}、N_{3,3}。通过递推计算:N_{2,3}(1.5)=0.5,N_{3,3}(1.5)=0.5,其余为0。验证规范性:0.5+0.5=1。该结果说明在u=1.5处,曲线主要由控制点P2和P3决定。

在插补实现中,基函数计算是每周期必须执行的核心运算。工程上常采用“节点区间定位+稀疏矩阵递推”策略,将计算量从O(n·p)降至O(p²),满足1ms插补周期的实时性要求。

2.5 常见误区与工程复盘

误区一:混淆控制点与曲线上的点。控制点通常不在曲线上,直接连接控制点得到的多边形不是曲线。在CAM仿真中,若误将控制点连线作为刀具路径,会产生严重过切。

误区二:权重归一化遗漏。在实现NURBS求值时,若忘记除以分母Σw_j·N_j,p(u),曲线形状将严重失真。尤其在权重非均匀时,误差可达数十毫米。

误区三:节点向量重复度设置不当。内部节点重复度超过p时,基函数出现零分母,导致计算崩溃。例如p=3时,内部节点重复度最多为3。

误区四:忽略权重对参数化的影响。高权重区域参数变化慢,若插补器按等参数步长计算,实际弧长步长会不均匀,导致进给速度波动。解决方法是采用弧长参数化或自适应步长。

工程复盘案例:某叶轮加工项目,NURBS刀轨在叶片根部出现明显振动纹路。排查发现:原NURBS曲线权重w=5的局部区域,插补器按等参数步长Δu=0.001计算,导致实际弧长步长从0.02mm骤增至0.08mm,弓高误差超标。解决方案:①将权重降至2,减少参数化畸变;②改用自适应步长,根据曲率动态调整Δu;③在权重突变处插入额外节点,平滑过渡。修改后表面粗糙度从Ra1.6μm降至Ra0.8μm。

总结:掌握NURBS五要素的相互作用是插补算法设计的前提。控制点决定宏观形状,权重提供局部微调,节点向量控制参数化与连续性,基函数负责数学组合。实际调试时,建议先用可视化工具检查控制多边形与曲线偏差,再调整权重与节点。