2. NURBS曲线基础
NURBS(Non-Uniform Rational B-Spline,非均匀有理B样条)是复杂曲面插补与数控加工中最核心的数学表达形式。它通过统一框架精确描述解析曲线(如圆弧、椭圆)与自由曲线,是CAD/CAM与CNC插补器之间的“通用语言”。本章将系统拆解NURBS的五个核心要素——定义、控制点、权重、节点向量与基函数,并阐明它们如何共同决定曲线的形状、参数化与可微性,为后续插补算法(如速度规划、弓高误差控制)奠定数学基础。
上图展示了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 | 非均匀 | 是 |
2.2 控制点与权重:几何骨架与局部引力
核心原理:控制点P_i构成曲线的“控制多边形”,曲线不经过控制点(除首尾端点),而是被“拉向”控制点。权重w_i则控制曲线对第i个控制点的“亲近程度”:权重越大,曲线越靠近该控制点;权重越小,曲线越远离。当w_i→0时,该控制点对曲线无影响;当w_i→∞时,曲线退化为通过该控制点。权重还影响参数化速度——高权重区域参数变化更慢,这直接影响插补时的速度规划。
操作流程(权重调整):
- 在CAD中选中目标控制点,记录当前权重w_old。
- 设定新权重w_new,计算权重比k = w_new / w_old。
- 系统自动更新曲线,观察曲率变化。
- 若需保持曲线端点位置不变,需同时调整相邻控制点位置。
案例拆解(圆弧的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] | 局部加密,可产生尖角 |
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曲线的凸包性、局部修改性和数值稳定性。
操作流程(基函数计算):
- 确定参数u所在节点区间[u_k, u_{k+1})。
- 初始化0次基函数N_{i,0}(u)。
- 按递推公式逐层计算1次、2次...直至p次。
- 仅需计算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决定。
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。