一、NURBS曲线与曲面基础

各位同学好,我是老张。在数控行业摸爬滚打了十几年,今天咱们来聊聊NURBS曲线与曲面的基础。说实话,刚入行那会儿,我对这些数学公式也挺头疼的。但后来发现,搞懂这些基础,后面的插补算法才能玩得转。

核心要点:NURBS的核心是B样条基函数,理解了它,就掌握了NURBS的命门。

1.1 B样条基函数定义与性质

B样条基函数,说白了就是一组用来构造曲线的"积木块"。每个积木块都有自己的形状,拼在一起就能搭出复杂的曲线。

数学上,B样条基函数 Ni,p(u) 由Cox-de Boor递推公式定义:

Ni,0(u) = 1, 如果 ui ≤ u < ui+1
Ni,0(u) = 0, 其他

Ni,p(u) = (u - ui) / (ui+p - ui) * Ni,p-1(u)
               + (ui+p+1 - u) / (ui+p+1 - ui+1) * Ni+1,p-1(u)

嗯,这里要注意,这个公式看着复杂,但核心思想就两点:

  • 局部支撑性:每个基函数只在局部区间非零。我在项目中遇到过,这个性质特别重要——修改一个控制点,只影响曲线局部,不会牵一发动全身。
  • 非负性与规范性:所有基函数之和为1,且每个基函数≥0。这保证了曲线在控制点凸包内,不会出现"飞出去"的情况。

我的经验:调试NURBS曲线时,如果发现曲线形状异常,先检查节点向量是否合理。我曾经花了两天时间,最后发现是节点向量重复度设置错了。

1.2 NURBS曲线数学表达

NURBS曲线,全称是非均匀有理B样条。它比普通B样条多了"有理"二字,说白了就是引入了权因子。

数学表达式是这样的:

C(u) = Σi=0n Ni,p(u) * wi * Pi / Σi=0n Ni,p(u) * wi

其中:

  • Pi 是控制点
  • wi 是权因子
  • Ni,p(u) 是B样条基函数

你想想看,这个公式其实就是在做加权平均。分子是加权后的控制点,分母是权因子之和,两者相除就得到了曲线上的点。

1.3 权因子对曲线形状的影响

权因子是NURBS最灵活的参数。我个人习惯把权因子理解为"吸引力"——权因子越大,曲线越靠近对应的控制点。

权因子 wi 对曲线的影响 实际应用场景
wi → ∞ 曲线通过控制点 Pi 需要精确通过某点
wi = 1 退化为B样条 一般光滑曲线
wi → 0 曲线远离控制点 避开障碍物
wi < 0 曲线反向弯曲 特殊形状设计

避坑指南:我曾经在加工叶片曲面时,把权因子设成了负数,结果曲线直接"翻"到了控制点另一侧。所以,除非你明确知道自己在做什么,否则权因子保持正值。

1.4 NURBS曲面张量积表示

曲面是曲线的自然推广。NURBS曲面用张量积形式表示,说白了就是在两个方向上分别做曲线:

S(u,v) = Σi=0m Σj=0n Ni,p(u) * Nj,q(v) * wi,j * Pi,j 
         / Σi=0m Σj=0n Ni,p(u) * Nj,q(v) * wi,j

这里:

  • u 方向有 m+1 个控制点,p 次
  • v 方向有 n+1 个控制点,q 次
  • Pi,j 是控制网格点
  • wi,j 是每个控制点的权因子

为什么叫张量积?因为曲面基函数是两个方向基函数的乘积。这就像织布——经线和纬线交织成布面。

关键理解:曲面插补时,我们实际上是在做二维参数空间到三维空间的映射。u和v方向可以独立控制,这给加工路径规划带来了很大灵活性。

我记得有一次做汽车覆盖件模具的加工,曲面形状特别复杂。当时就是利用张量积的特性,把曲面分解成u方向和v方向分别处理,大大简化了插补计算。

NURBS曲线与曲面知识体系 NURBS基础 B样条基函数 NURBS曲线表达 权因子影响 曲面张量积 递推公式 局部支撑性 非负规范性 有理形式 加权平均 吸引力模型 参数影响表 二维参数空间 控制网格 图1:NURBS曲线与曲面知识体系结构图

好了,以上就是NURBS曲线与曲面的基础内容。这些概念是后续插补算法的基础,建议你多花点时间理解。下一节我们会深入讨论曲线插补的具体实现。

专注资料整理