B样条曲线

在保留Bézie优点的同时,克服了他的弱点:采用样条——分段连续多项式

例如,现在有n+1个点,在每两点之间构造一条多项式,则有n个小区间。每个小区间构造一条三次多项式,变成了n段的三次多项式拼接在一起,段与段之间要C²连续,这就是三次样条

定义

 P(t)=∑i=0nPiNi,k(t)P(t)=\sum_{i=0}^{n}P_{i}N_{i,k}(t)P(t)=∑i=0n​Pi​Ni,k​(t)

其中,Pi是控制点,Ni,k(t)N_{i,k}(t)Ni,k​(t)是调和函数,被称为k阶(k-1次)B样条基函数
 B样条基函数是一个称为节点矢量的非递减的参数t的序列所决定的k阶分段多项式,也即为k阶(k-1次)多项式样条。

类型的划分

曲线按其端点是否重合,分为闭曲线和开曲线

B样条曲线按其节点矢量中节点的分布情况,可划分为四种类型:

  1. 均匀B样条曲线
    节点矢量中节点为沿参数轴均匀或等距分布,所有节点区间长度为常数。这样的节点矢量定义了均匀的B样条基。

  2. 准均匀B样条曲线
    与均匀B样条曲线的差别在于两端节点具有重复度k,这样的节点矢量定义了准均匀的B样条基。均匀B样条曲线没有保留Bézier曲线端点的几何性质,即样条曲线的首末端点不再是控制多边形的首末端点。采用准均匀的B样条曲线解决了这个问题

  3. 分段Bézier曲线
    节点矢量中两端节点具有重复度k,所有内节点重复度为k-1,这样的节点矢量定义了分段的Bernstein基。
    B样条曲线用分段Bézier曲线表示后,各曲线段就具有了相对的独立性,移动曲线段内的一个控制顶点只影响该曲线段的形状,对其它曲线段的形状没有影响。并且Bézier曲线一整套简单有效的算法都可以原封不动地采用。缺点是增加了定义曲线的数据,控制顶点数及节点数。

  4. 非均匀B样条曲线
    任意分布的节点矢量,只要在数学上成立(节点序列非递减,两端节点重复度≤k,内节点重复度≤k-1)都可选取。这样的节点矢量定义了非均匀B样条基

B样条曲线的性质

  1. 局部性:k阶B样条曲线上参数为 t∈[ti,ti+1]t\in[t_{i},t_{i+1}]t∈[ti​,ti+1​] 的一点至多与k个控制顶点 Pj(j=i−k+1,...,i)P_{j}(j=i-k+1,...,i)Pj​(j=i−k+1,...,i) 有关,与其他控制顶点无关;移动该曲线的第i个控制顶点Pi至多影响到定义在区间 (ti,ti+k)(t_{i},t_{i+k})(ti​,ti+k​) 上那部分曲线的形状,对曲线的其余部分不发生影响。
  2. 连续性:P(t)在r重节点处的连续阶不低于k−1−rk-1-rk−1−r,整条曲线上的连续性不低于k−1−rmaxk-1-r_{max}k−1−rmax​
  3. 凸包性:P(t)在区间 (ti,ti+1),k−1≤i≤n(t_{i},t_{i+1}), k-1≤i≤n(ti​,ti+1​),k−1≤i≤n 上的部分位于k个点 Pi−k+1,...,PiP_{i-k+1},...,P_{i}Pi−k+1​,...,Pi​ 的凸包CiC_{i}Ci​内,整条曲线则位于各凸包CiC_{i}Ci​的并集之内。这个性质被称为强凸包性。
  4. 分段参数多项式:P(t)在每一区间上都是次数不高于k-1的参数t的多项式
  5. 导数公式
    P′(t)=(∑i=0nPiNi,k(t))′=∑i=0nPiNi,k′(t)P'(t)=\left ( \sum_{i=0}^{n}P_{i}N_{i,k}(t) \right )'=\sum_{i=0}^{n}P_{i}N_{i,k}'(t)P′(t)=(∑i=0n​Pi​Ni,k​(t))′=∑i=0n​Pi​Ni,k′​(t)

    =(k−1)∑i=1n(Pi−Pi−1ti+k−1−ti)Ni,k−1(t),t∈[tk−1,tn+1]=(k-1)\sum_{i=1}^{n}\left ( \frac{P_{i}-P_{i-1}}{t_{i+k-1}-t_{i}} \right )N_{i,k-1}(t), t \in[t_{k-1},t_{n+1}]=(k−1)∑i=1n​(ti+k−1​−ti​Pi​−Pi−1​​)Ni,k−1​(t),t∈[tk−1​,tn+1​]

  6. 变差缩减性:设平面内n+1个控制顶点构成B样条曲线P(t)的特征多边形。在该平面内的任意一条直线与P(t)的交点个数不多于该直线和特征多边形的交点个数
  7. 几何不变性:B样条曲线的形状和位置与坐标系的选择无关
  8. 仿射不变性:在仿射变化下,表达式具有形式不变性
    A[P(t)]=∑i=0nA[pi]Ni,k(t)A[P(t)]=\sum_{i=0}^{n}A[p_{i}]N_{i,k}(t)A[P(t)]=∑i=0n​A[pi​]Ni,k​(t), t∈[tk−1,tn+1]t\in[t_{k-1},t_{n+1}]t∈[tk−1​,tn+1​]
  9. 直线保持性:控制多边形退化为一条直线时,曲线也退化为一条直线
  10. 造型的灵活性:用B样条曲线可以构造直线段、尖点、切线等特殊情况

3.4.7 B样条曲面

给定参数轴u和v的节点矢量 U=[u0,u1,...,um+p]U=[u_{0},u_{1},...,u_{m+p}]U=[u0​,u1​,...,um+p​] 和 V=[v0,v1,...,vn+q]V=[v_{0}, v_{1}, ..., v_{n+q}]V=[v0​,v1​,...,vn+q​], p×q阶B样条曲面定义如下:

 P(u,v)=∑i=0m∑j=0nPijNi,p(u)Nj,q(v)P(u,v)=\sum_{i=0}^{m}\sum_{j=0}^{n}P_{ij}N_{i,p}(u)N_{j,q}(v)P(u,v)=∑i=0m​∑j=0n​Pij​Ni,p​(u)Nj,q​(v)

其中, Pi,jP_{i,j}Pi,j​构成一张控制网络,称为B样条曲线的特征网络

Ni,p(u)N_{i,p}(u)Ni,p​(u) 和 Nj,q(v)N_{j,q}(v)Nj,q​(v) 是B样条基,分别用节点矢量U和V按照deBoor-Cox递推公式决定

B样条曲线 及 B样条曲面相关推荐

  1. 3次Bezier曲线,曲面和3次B样条曲线和曲面

    问题: 昨天刚忙完图形学的编程作业,题目是自拟,听老师说他要重点考这个自由曲线,曲面,特地把作业定位了这个,好熟悉熟悉,据说成程老师的课考试非常的难呀.郁闷. 解答: 先自由曲线的含义和概念.基本上我 ...

  2. PCL-surface/on_nurbs模块分析

    文章目录 1. B样条曲线 2. B样条曲面 3. 多个B样条曲面的全局优化 1. B样条曲线 基于点距离最小化的三维B样条曲线拟合: fitting_curve_pdm.h fitting_curv ...

  3. 样条曲面_SolidWorks肥皂块曲面建模,你的肥皂掉了

    1.考查重点 本文将对肥皂块进行曲面建模,主要演示样条曲线(套合).放样曲面.扫描曲面.填充曲面等知识点的运用,由于肥皂为前后左右对称,因此只建4分之1再镜像,产品效果图如下所示. 2. 实例操作 步 ...

  4. Bezier、B样条曲线曲面

    这里只列出核心,具体原理参看底部参考文献 Bezier曲线 三次Bezier曲线 第一个控制点和最后一个控制点在曲线上: 两端点的切矢方向与控制多边形(特征多边形)的第一条和最后一条边一致: Bezi ...

  5. 双三次B样条曲面及其微分几何基本量计算

    序 ​ 由于B样条基函数的灵活性和局部调整性,B样条曲面可通过改变控制顶点设计出不同的形状,因此被广泛用于各领域的实体建模工作. 最近可能会用到,故补充这一部分内容. 此外, 本文还介绍了其微分几何基 ...

  6. B样条曲线曲面(附代码)

    1 B样条曲线 1.1 B样条曲线方程 B样条方法具有表示与设计自由型曲线曲面的强大功能,是形状数学描述的主流方法之一,另外B样条方法是目前工业产品几何定义国际标准--有理B样条方法 (NURBS)的 ...

  7. 计算机图形学--------充分理解B样条曲线

    样条(spline)二字,从英文翻译过来的,让人费解.B样条的数学定义更是让人匪夷所思.看了好几本参考教材,还是把总结一下B样条这个概念. 一.解释什么是样条. 实际应用中,样条是一根富有弹性的细木条 ...

  8. C4D样条曲线建模大师班 Cinema 4D MasterClass: Master Modelling using Splines

    通过本课程,快速学习使用样条曲线建模的基础知识,并将您的技能提升到一个新的水平 你会学到什么 能够使用样条线对整个对象进行建模 三维建模和UV展开 能够找到模拟复杂形状的最佳方法 无数的提示和技巧 在 ...

  9. 计算机图形什么叫参数连续性,计算机图形学--参数三次插值样条曲线.ppt

    计算机图形学--参数三次插值样条曲线 参数三次插值样条曲线 三次多项式方程是能表示曲线段的端点通过特定点且在连接处保持位置和斜率的连续性的最低阶次的方程.与更高次的多项式方程相比,三次样条只需要较少的 ...

最新文章

  1. libgdx和android界面结合,Android游戏引擎libgdx使用教程5:常用UI类与舞台
  2. java集合学生信息_java 使用 集合 制作学生管理系统
  3. ajax 偶尔302,关于Ajax 中response出现302的一点见解
  4. 多线程共享java_java多线程之共享资源
  5. vfp报表纸张设置_VFP 9.0中实现多种自定义纸张格式的报表打印
  6. 写作是最好的学习方法
  7. Chrome无法使用Unity Web Player的解决方案
  8. 人员基础信息一体化采集设备
  9. matlab模板图像匹配,基于Matlab 图像匹配――模板匹配
  10. VBM后的双样本t检验
  11. 微信模板消息发送帮助类
  12. 【渝粤题库】陕西师范大学180102 广告策划 作业(高起专)
  13. 你理解的商业数据分析到底是怎样的?
  14. 拼多多推广中出价是越高效果越好吗?
  15. python编写hello程序_python第一个程序“Hello, world”
  16. signature=fd1093c9205f8af457ccc5f1d3251c78,An FDTD method for ELFE propagation in seawater.
  17. 《Javascript高级程序设计》--读书笔记(二)
  18. 3升杯子5升杯子倒出4升水
  19. vue3的撤销与重做
  20. 索尼电动汽车 - 无人驾驶EV界“制造会跑的智能手机”

热门文章

  1. 肠子的小心思(二):你坐在马桶上的姿势很可能不正确
  2. [喵咪的Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定
  3. QCustomPlot使用手冊(三)
  4. cocos2d-x android 移植 问题
  5. [IoC容器Unity]第四回:使用范例
  6. 一个web蠕虫的简单实现
  7. php拍照从手机相册中选择,微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例...
  8. 区块链概况:什么是区块链
  9. 以太坊今日大涨7.5%,芝商所备战“以太坊期货”
  10. 【Python培训基础】一篇文件教你py文件打包成exe