天天看点

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

              B-spline Curves: Important Properties

        B-样条曲线有很多与贝塞尔曲线一样的重要性质,因为前者是后者的推广。而且,B-样条曲线有比贝塞尔曲线更渴望的性质。下面列出B-样条曲线一些最重要的性质。

  接下来我们假设一个由n + 1 控制点和一个节点向量U = { u0, u1, ...., um } 定义的 p次B-样条曲线C(u),其中头p+1个和最后 p+1个节点是 "clamped" (即,u0 = u1 = ... = up 和 um-p = um-p+1 = ... = um).

(1) 1.  B-样条曲线是个逐段曲线,每个分量是p次曲线。

  如前页提到的, C(u) 可看作是定义在每个节点区间的曲线段的联合。在下图中,其中n = 10, m = 14 和 p = 3, 头四个节点和最后四个节点是clamped而中间7个节点上均匀分布的。有8个节点区间,每个对应于一个曲线段。在下面左图,这些节点点以三角形标示。

  这个良好性质使得我们可以以更低次多项式来设计复杂形状。例如,下面右图显示了相同控制点的贝塞尔曲线。即使在其次数达到10仍然不能很好逼近控制折线 (polyline)!

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

  一般,次数越低,B-样条曲线越逼近它的控制折线(polyline)。下图都使用相同的控制折线(polyline)且节点是 clamped且 均匀分布。 第一个图是7次,中间的是5次而右图是3次。因此,当次数减小,产生的B-样条曲线越接近它的控制折线(polyline)。

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties
B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties
B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

(2) 等式 m = n + p + 1必须满足。

  由于每个控制点需要一个基函数且基函数数目满足 m = n + p + 1。

(3) Clamped B-样条曲线C(u)通过首尾两个控制点 P0 和Pn 。

  注意基函数N0,p(u) 是控制点 P0 的系数且在[u0,up+1)上非零因为对于一个clamped B-样条曲线有 u0 = u1 = ... = up = 0, N0,0(u), N1,0(u), ...., Np-1,0(u)为零且只有 Np,0(u)是非零(回忆三角计算格式) 因此,如果u = 0,那么N0,p(0)是1且C(0) = P0。相似地可得到C(1) = Pn 。

(4) 样条曲线包含在控制折线(ployline)的凸包内。更特别地,如果u 在节点区间[ui,ui+1)里,那么C(u)在控制点Pi-p, Pi-p+1, ..., Pi的凸包里。

  如果u 在节点区间 [ui, ui+1)里,那么只有p+1 个基函数(即,Ni,p(u), ... , Ni-p+1,p(u), Ni-p,p(u))在该节点区间非零。因为 Nk,p(u) 是控制点 Pk的系数,只有 p+1个控制点 Pi, Pi-1, Pi-2, .., Pi-p 有非零系数。因为在该节点区间上的基函数非零且累加和为 1,它们的“权重”平均( "weighted" average), C(u), 必须位于由控制点 Pi, Pi-1, Pi-2, .., Pi-p定义的凸包内。 “强”的意思是当 C(u) 仍位于由所有控制点定义的凸包内,它位于更小的里面。 

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties
B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

  上面两个 B-样条曲线有11个控制点(即,n = 10), 3次 (即, p=3)  及15 个节点 (m = 14),其中头四个和最后四个节点 是 clamped。因此,节点区间的数目等于曲线段的数目。节点向量是

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

  左图有u 在节点区间 [u4, u5) = [0.12,0.25)上且相应的点(即 C(u))在第二条曲线段上。因此,有p+1 = 4 个基函数在给节点区间(即,N4,3(u), N3,3(u), N2,3(u) 和 N1,3(u) )上非零且相应的控制点是P4, P3, P2 and P1。阴影部分是由这四个点定义的凸包。很清楚C(u) 位于凸包内。

  右图的B-样条曲线同样方式定义。 但是,u 是在[u9, u10) = [0.75,0.87)上且非零基函数是N9,3(u), N8,3(u), N7,3(u) 和N6,3(u)。 相应的控制点是 P9, P8, P7 和 P6。

  因此,当  u 从 0移到1并越过一个节点时,一个基函数变为零而一个新的非零基函数开始有效。结果是,系数变为零的控制点会离开当前凸包的定义而被一个新的系数变为非零的控制点所代替。

(5) Pi 只影响在区间[ui, ui+p+1)上的曲线 C(u)。

  这是从B-样条基函数的一个重要性质得到。回忆Ni,p(u) 在区间[ui, ui+p+1)上非零。. 如果u不在该区间, Ni,p(u)Pi 在计算computing C(u)时没有作用因为 Ni,p(u)是零。另一方面,如果u是指示的区间, Ni,p(u) 非零。如果 Pi 改变它的位置, Ni,p(u)Pi 被改变导致C(u)被改变。

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties
B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

  上面B-样条曲线以在前面凸包例子一样的参数定义。我们想移动控制点P2 。控制点的系数是N2,3(u) 且有非零系数在其上的区间是 [u2, u2+3+1) = [u2, u6) = [0,0.37)。因为 u2 = u3 = 0,只有三段被影响,分别是对应 u3, u4) 的(第一个曲线段的定义域), [u4, u5) (第二个曲线段的定义域) 和[u5,u6) (第三个曲线段的定义域) 。右图显示的是移动 P2 到右下角的结果。正如你看到的,只有第一,第二和第三曲线段改变了形状而剩余其他曲线段保持在原来位置没有改变。

  局部修改方案对曲线设计非常重要,因为我们可以局部修改曲线而不需全局改变形状。这将在moeing control point 页详细说明。而且,如果需要更精细调整曲线形状,可以插入更多节点(因而更多控制点)以至于被影响的区域被限制在很窄区域。以后我们会谈到节点插入。

(6) C(u) 在重复度 k 的节点上是Cp-k 连续的

  如果 u 不是一个节点, C(u) 是p 次曲线段的中部因而是无限可微的。如果 u 是在 Ni,p(u)的非零定义域中的一个节点,既然后者是Cp-k 连续的,C(u)也一样。

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

  上图B-样条曲线有18个控制点 (即, n = 17),  4次(degree),clamped节点向量如下

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

  因此, u6 是一个双重节点, u9是一个三重节点而u13 是一个四重节点。因此, C(u) 在不是节点的任何点是 C4 连续的,在所有简单节点处 C3 连续的,在 u6是C2 连续的,在u9 是 C1连续的,在u13是 C0 连续的。

  在曲线上与节点相对应的所有点用小三角标记。那些对应于多重节点的点用圆和重复度标记。要可视化 C4, C 3 和甚至C2 连续性之间的差别是很困难的。对 C1 情况,相应的点位于一条边(leg)上,而 C0 情况迫使曲线通过一个控制点。我们会在后面讨论修改节点时返回这个问题。

(7) 变分减小性质

  变分减小性质度对B-样条曲线也成立。如果曲线在平面(resp., 空间)上,这意味着没有直线(resp., 平面) 与 B-样条曲线相交的次数多于它与曲线控制折线(polyline)相交的次数。

  

B-spline Curves 学习之B样条曲线性质(5)              B-spline Curves: Important Properties

  在上图中,蓝线与控制折线(polyline)和B-样条曲线都相交6次,而黄线也与控制折线和B-样条曲线相交5次。但是,橘黄线与控制折线相交 6次和曲线相交4次。

(8) 贝塞尔曲线是B-样条曲线的特例

  如果 n = p (即,B-样条曲线的次数是n, 控制点的数目减1有 2(p + 1) = 2(n + 1)个节点,其中 p + 1个在端(end)处clamped,这个B-样条曲线退化到贝塞尔曲线。

(9) 仿射不变性

  仿射不变性对B-样条曲线也成立。如果一个仿射变换应用于B-样条曲线,得到的结果可以从它的控制点的仿射像(images)构建得到。这是一个好性质。当我们要对B-样条曲线应用一个几何或仿射变换,这条性质说明我们可以对控制点进行变换,而这相当容易,而且一旦获得了这些变换后的控制点,变换B-样条曲线就是这些新点定义的。因此,我们不需要对曲线进行变换。

2. 使用B-样条曲线的优点

  B-样条曲线比贝塞尔曲线需要更多信息(即,曲线的次数和一个节点向量 )和更复杂的理论。但是它有更多优点来弥补这个缺点。

(1) 一个B-样条曲线可以是一个贝塞尔曲线。

(2) B-样条曲线满足贝塞尔曲线有的所有重要性质。

(3) B-样条曲线提供了比贝塞尔曲线更灵活的控制。

  例如,一个B-样条曲线的次数与控制点数目是分开的。更准确地说,我们可以使用更低次曲线而仍然保持很多控制点。我们可以改变一个控制点位置而不会全局地改变整个曲线形状(局部修改性质)。因为B-样条曲线满足强凸包性质,它们可以进行更精细的形状控制。而且,还有其他设计和编辑形状的技术比如改变节点。

  但是,记住B-样条曲线仍然是多项式曲线而多项式曲线不能表示许多有用的简单的曲线比如圆和椭圆。因此,需要B-样条的一个推广,NURBS。后面会讨论 NURBS 。