B-样条曲线:重要性质

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 = ... = upum-p = um-p+1 = ... = um).

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

 

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

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

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

u0

u1

u2

u3

u4

u5

u6

u7

u8

u9

u10

u11

u12

u13

u14

0

0

0

0

0.12

0.25

0.37

0.5

0.62

0.75

0.87

1

1

1

1

左图有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-样条曲线以在前面凸包例子一样的参数定义。我们想移动控制点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-样条曲线有18个控制点 (即, n = 17),  4次(degree),clamped节点向量如下

u0 to u4

u5

u6 and u7

u8

u9 to u11

u12

u13 to u16

u17

u18 to u22

0

0.125

0.25

0.375

0.5

0.625

0.75

0.875

1

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

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

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

在上图中,蓝线与控制折线(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-样条曲线就是这些新点定义的。因此,我们不需要对曲线进行变换。

使用B-样条曲线的优点

B-样条曲线比贝塞尔曲线需要更多信息(即,曲线的次数和一个节点向量 )和更复杂的理论。但是它有更多优点来弥补这个缺点。第一,一个B-样条曲线可以是一个贝塞尔曲线。第二,B-样条曲线满足贝塞尔曲线有的所有重要性质。第三,B-样条曲线提供了比贝塞尔曲线更灵活的控制。例如,一个B-样条曲线的次数与控制点数目是分开的。更准确地说,我们可以使用更低次曲线而仍然保持很多控制点。我们可以改变一个控制点位置而不会全局地改变整个曲线形状(局部修改性质)。因为B-样条曲线满足强凸包性质,它们可以进行更精细的形状控制。而且,还有其他设计和编辑形状的技术比如改变节点。

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

上一页闭曲线                  回目录                        下一页系数计算

译注:

  1. 本文翻译是“B-样条曲线(B-spline Curves)教程”中的一部分,其余翻译部分见“B-样条曲线(B-spline Curves)教程目录”。
  2. “B-样条曲线(B-spline Curves)教程”是翻译自C.-K. Shene博士的CS3621 Introduction to Computing with Geometry Notes的第6部分“B-spline Curves”。
  3. 本文原文地址:B-spline Curves: Important Properties   。
  4. 本文首发“博士数学家园 ”

B-样条曲线:重要性质相关推荐

  1. B-Spline样条曲线及其性质

    目录 B-Spline 学习笔记(MOOC) [1] B样条产生的背景 1. Bezier曲线的不足 2. 克服不足的方法 3. 如何进行分段? [2] B样条的递推定义 1. B-Spline与Be ...

  2. B样条曲线 及 B样条曲面

    B样条曲线 在保留Bézie优点的同时,克服了他的弱点:采用样条--分段连续多项式 例如,现在有n+1个点,在每两点之间构造一条多项式,则有n个小区间.每个小区间构造一条三次多项式,变成了n段的三次多 ...

  3. 清华大学计算机图形学课程

    教学大纲 课堂讲授的主要的知识点: 第一章 图形学简介 1.1 计算机图形学的研究内容 1.2 发展的历史回顾 1.3 应用及研究前沿 1.4 图形设备 2学时 第二章 颜色模型.图像基本知识.Pho ...

  4. 计算机图形学应用题,计算机图形学教学大纲

    一.计算机图形学教学大纲 学时:51学时 本课程的目的与任务:运用计算机描述物体并生成图形,使计算机技术在许多领域得到了更广泛的应用.计算机图形学即是这样一门学科,本课程主要讲授计算机图形中最基本.最 ...

  5. 计算机图形学算法总结

    图形学算法总结 文章目录 图形学算法总结 直线生成算法 数值微分法(DDA) 中点画线法 Bresenham算法 圆弧生成算法 中点Bresenham画圆法 多边形填充算法 逐点判断法 1)射线法 2 ...

  6. 贝塞尔曲线,B-样条,非均匀有理B样条梳理

    文章目录 1. 贝塞尔曲线(Bézier curve) 1.1 一阶贝塞尔曲线 1.2 二阶贝塞尔曲线.高阶贝塞尔曲线 1.3 贝塞尔曲线的一般形式 1.4 贝塞尔曲线的性质 1.5 贝塞尔曲线在运动 ...

  7. 如何理解计算机科学中的接口,计算机图形学

    第一章名词解释: 计算机图形学名词解释:怎样用计算机生成.处理和显示图像的学科. 图形名词解释:能够在人们视觉系统中形成视觉印象的对象称为图形,包括自然景物和人工绘图. 数字图像处理名词解释:针对图像 ...

  8. 计算机图形图像学基础,计算机图形学基础(第2版)

    计算机图形学基础(第2版) 语音 编辑 锁定 讨论 上传视频 <计算机图形学基础(第2版)>是2011年电子工业出版社出版的图书,作者是陆枫.何云峰. 书    名 计算机图形学基础(第2 ...

  9. 计算机图形学主要内容

    计算机图形学基础(第2版)---陆枫  何云峰  编著 第1章,简要介绍计算机图形学的基本概念.应用和发展动态. 第2-5章,由"外"到"内"介绍计算机图形处理 ...

  10. 计算机图形学 第六章 曲线曲面建模技术

    文章目录 1 参数方程 2 参数曲线的一般形式 3 张量积形式的参数曲面 4 连续性的定义 参数连续性Ck 5 插值.逼近和拟合 6 Bernstein多项式 7 Bezier曲线及曲面,构造方法和性 ...

最新文章

  1. codeigniter配置smarty模板
  2. python开发应用程序错误怎么办_编程中遇到的Python错误和解决方法汇总整理
  3. SAP CRM WebClient UI注释引起的错误消息:Uncaught SyntaxError - unexpected end of input
  4. android studio升级时提示 Connection failed. Please check your network connection and try again
  5. 程超:突破瓶颈!如何不断的提高自己
  6. 电脑怎么改网络ip地址_电脑的桌面路径怎么改?
  7. IOT(29)---深入解析物联网操作系统(架构/功能/实例分析)
  8. android使用greedao踩坑日记
  9. 9 多线程对非共享数据
  10. 如何利用魔棒工具抠图_10秒教你如何用PS魔棒工具抠图
  11. cefsharp启动优化
  12. PCB设计基础及技巧
  13. 设计模式:建造模式(组装电脑)
  14. searchableSelect下拉框插件增加按拼音及首拼搜索
  15. centos7查看oracle监听端口,CentOS 7开放及查看防火墙firewall的端口
  16. 正交频分复用中的正交问题
  17. DataFrame.drop_duplicates操作中的inplace参数
  18. 【金猿产品展】创宇蜜罐——网络威胁处置最便捷的蜜罐产品
  19. echarts 饼状图
  20. 内涝预测过程的噪音_缓解城市内涝顽疾 杭州城西将建全省最大地下排涝隧洞...

热门文章

  1. PS制作android图标
  2. speedoffice文档中如何快速撤回到上一步操作
  3. Linux下串口调试及使用shell编程接收数据
  4. 求一个方阵的主对角线及次对角线的和(C语言)(二维数组)
  5. 音视频开发系列-H264编码原理
  6. 吉他(guitar)
  7. android 主流机型排行,安卓手机性能排行:华为Mate40 Pro仅排第四,第一名无可撼动...
  8. 罗彻斯特大学计算机科学系专业排名,罗切斯特大学优势专业及优势专业排名(USNEWS美国大学排名)...
  9. 最最最详细的springboot项目中集成微信扫码登入功能.步骤代码超级详细(OAuth2)
  10. ARM 编译工具keil 和 IAR 命令行编译和下载