B样条曲线

2023-11-15

学习B样条曲线需要先学习贝塞尔曲线,若未了解,看我一篇上博客https://blog.csdn.net/weixin_42513339/article/details/83019610

贝塞尔函数不足

由于贝塞尔曲线存在以下不足:

        1 )缺乏局部修改性即改变某一控制点对整个曲线都有影响。

        2 n 较大时,特征多边形的边数较多对曲线的控制减弱。

        3 )幂次过高难于修改。(而在外形设计中,局部修改是随时要进行的

所以提出了B样条曲线,B样条曲线有以下优点:

  1 )逼近特征多边形的精度更高。

  2 )多边形的边数与基函数的次数无关。

  3 )具有局部修改性。

首先,贝塞尔公式为:

其中,  为伯恩斯坦基函数(BEZ)

 

所以公式可以写成

 

B样条曲线

B样条曲线,用B样条基函数代替伯恩斯坦基函数如下所示:

这里的你只是一个比例系数,但是这里把你从0到1分成很多段。如果节点等间距(即  ui +1 -  ui  是一个常数,对0 <=  i  <=  m  - 1),节点向量或节点序列称为均匀的;否则它是非均匀的。

节点可认为是分隔点,将区间[ u0,um]细分为节点区间。所有B样条基函数被假设定义域在[ u0um ]上。uo  = 0和um  = 1,所以定义域是闭区间[0,1]。

相关定义

在图形学书里,也写明了若此时线段的顶点个数为m + n + 1(m为最大段号,n为阶次)

B样条曲线主要也是为了平滑曲线,而且这里的阶次,换个说法就是目前这个点能够影响它附近多少个点

 

多重节点与简单节点

如果一个节点ui出现k次(即,ui = ui + 1 = ... = ui + k-1),其中k> 1,ui是一个重复度(multiplicity)为的多重节点写ui(k否则),如果用户界面只出现一次,它是一个简单节点。

 

B样条基函数

区间我的ķ次B样条基函数,写为镍,K(U),递归定义如下:

K = 0时的Ni,k(u)
    如果次数为零(即k = 0),这时基函数都是阶梯函数,如果你是在第i个节点区间[ui,ui + 1)上,那么基函数的Ni,0(U)= 1。
 

例:
    有四个节点U = {0,1,2,3},节点区间0,1,2分别对应[0,1),[1,2),[2,3]。(这里你的范围也只是一个比例关系)

  

画出图如下所示:

 

若K = 1时的的Ni,K(U)

下图中,黑色和红色线分别是N0,1(u)和N1,1(u)。


 

PS:

 为了理解 阶数k 大于0时,计算Ni,ku)的方法,我们使用三角计算格式。所有节点区间列在左边(第一)列,所有零次基函数在第二列。见下图。

从这一张图里,我们可以很清楚的看到,如果想计算某个基函数,那么就必须要知道哪些零次基函数,然后需要哪两个计算,都可以从图里看出来。

比如:

我们继续计算K = 2时的镍,K(U),如下:

其中,当你在[0,1)上时,这种情况,只有N0,1(u)对N0,2(u)的值有贡献。因此,N0,1(u)是你,得到

你在[1,2]上: 

这种情况,N0,1(u)和N1,1(u)都对N0,2(u)有贡献。在[1,2]上N0,1(u)= 2 - u和N1,1( u)= u - 1,得到: 


你在[2,3]上: 

这种情况,只有N1,1(u)对N0,2(u)有贡献。在[2,3]上N1,1(u)= 3 - u,得到:

可以最后得到N0,2(u)函数图形 

 

基函数的非零定义域的确定

实际上也是主要通过图来看如下图,我们可以得知:如果我们要计算N1,3(U),那么它的有效定义域是u1到u5通过下图可以直接看出。

说的更加理论一点就是:

基函数Ni,p(u)在[ui,ui + k + 1)上非零。或,相等地,Ni,k(u)在k + 1个节点区间[ui,ui + 1],[ui + 1,ui + 2),...,[ui + k,ui + k + 1)上非零。

在这里,我们可以观察出重要的一点,为什么B样条曲线的顶点数是m + n + 1,因为跟它的定义域是有关的。

 

非零定义域对应的基函数

与上面正好相反,我们可以通过基函数的阶数,来确定他的定义域。

同样,一个定义域,我们也可以看出(如下图):

任何一个节点区间[ui,ui + 1],最多有k + 1个k次基函数非零,即:Ni-k,k(u),Ni-k + 1,k(u),Ni-k + 2,k(u),...,Ni-1,k(u)和Ni,k(u)。

 

系数的意义

第一项,Ni,k-1(u),在[ui,ui + k)上非零。如果u是在该区间,那么你 - ui是u到该区间左端的距离,区间长度为ui + k - ui,(u - ui)/(ui + k - ui)是你在上述区间的归一化位置。

第二项,Ni + 1,k-1(u),在[ui + 1,ui + k + 1)上非零。如果u在该区间,那么ui + k + 1 - u是u到该区间右端的距离,ui + k + 1 - ui + 1是区间长度,(ui + k + 1 - u)/(ui + k + 1 - ui + 1)是u在上述区间的归一化位置。

    

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

B样条曲线 的相关文章

随机推荐

  • 生成式人工智能的潜在有害影响与未来之路(一)

    这是本文的第1版 反映了截至2023年5月15日 Generative AI的已记载的和预期的危害 由于Generative AI的发展 使用和危害的快速变化 我们承认这是一篇内在的动态论文 未来会发生变化 在本文中 我们使用一种标准格式来
  • 【观察】VMware:二十而冠,以梦为马不负韶华

    申耀的科技观察 读懂科技 赢取未来 今年7月 VMware首席执行官Pat Gelsinger成功登顶了世界七大高峰之一的乞力马扎罗山 期间的巨大挑战可想而知 但越困难越危险 也就越迷人 因为登顶的魅力 也是挑战自我 超越自我的过程 这似乎
  • idea添加自定义注释

    idea添加自定义注释 废话不多说 直接上图 1 设置Settings gt 编辑器Editor gt Live Templates 2 右侧加号 3 填写快捷缩写Abbreviation 描述Description 4 填写注释的内容 5
  • Nginx日志按日分割方法

    本文使用logrotate工具对Nginx日志进行按日的自动切割 操作系统为Centos7 6 步骤如下 1 编写针对Nginx的logrotate脚本如下 保存在 etc logrotate d usr local nginx logs
  • 数据结构——拓扑排序算法

    拓扑排序的深度优先算法 Topological Sort with Depth First Search 是一种在有向无环图 DAG 中进行排序的方法 该算法使用递归来进行深度优先搜索 并在搜索完成后将节点添加到排序结果中 include
  • Set接口概述

    1 Set集合和List集合的区别 Set 不允许元素重复 集合元素唯一 元素可以为null 不能保证迭代顺序恒久不变 无序 存储和取出不一致 List 允许元素重复 并且元素有序 存储和取出一致 2 Set 集合存储元素时可以保证元素的唯
  • 计算机毕业设计 基于SSM框架+Vue的企业人事信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

    博主介绍 从事软件开发10年之余 专注于Java技术领域 Python人工智能及数据挖掘 小程序项目开发和Android项目开发等 CSDN 掘金 华为云 InfoQ 阿里云等平台优质作者 文末获取源码联系 精彩专栏推荐订阅 不然下次找不到
  • idea中配置Tomcat找不到的解决办法

    idea中配置Tomcat找不到的解决办法 最近重装了系统 所以重新下载了一下idea 配置tomcat时发现找不到Tomcat Server 下面是一种解决方法 希望也可以帮助到大家 具体的实施步骤 File gt Settings gt
  • C++中nothrow的介绍及使用

    在C中 使用malloc等分配内存的函数时 一定要检查其返回值是否为 空指针 并以此作为检查内存操作是否成功的依据 这种Test for NULL代码形式是一种良好的编程习惯 也是编写可靠程序所必需的 在C 中new在申请内存失败时默认会抛
  • 使用布谷鸟算法优化的LSTM进行数据回归预测

    使用布谷鸟算法优化的LSTM进行数据回归预测 在时间序列数据分析方面 长短时记忆网络 LSTM 已经成为一种流行的方法 然而 LSTM模型中的大量参数使得该模型的训练变得困难 因此 本文提出了一种基于布谷鸟算法的优化方法来加速LSTM模型的
  • 一网通办的内涵解构

    一网通办 节选 一网通办 这四个字的每一个字都有特定的含义 整合在一起便构成了具有内在逻辑关系的特定概念 1 一网通办 的核心在于 办 办 重视的是办理 一方面从民众角度出发 提高和丰富企业与个人办事的体验度 满意度 获得感 使民众能够及时
  • 1074 Reversing Linked List (25 point(s))

    1074 Reversing Linked List 25 point s Given a constant K and a singly linked list L you are supposed to reverse the link
  • [CentOS]Chkrootkit后门检测工具的安装

    工具介绍 Chkrootkit 工具用来监测 rootkit 是否被安装到当前系统中 rootkit 是 攻击者经常使用的后门程序 这类后门程序通常非常隐秘 不易被察觉 植入后 等于为攻击者建立了一条能够长时间入侵系统或可对系统进行实时控制
  • 基于置换均线的二次穿越突破均线

    1 名词解释 置换均线 移位移动平均线也称置换移动平均线 置换均线 DMA 不是将当根bar上计算的均线值画上当根bar上 而是将历史的均线值画在当根bar上 使均线值整体向未来偏移了指定数量的bar 将移动平均K线向后平移一定BAR数即为
  • 西瓜书学习(一)—决策树(上)

    1 什么是决策树 顾名思义 决策树是以树形的结构方式来对事件做决定和分类 我们以来判断一个瓜是不是好瓜来举例子 如下 决策树的结构一般包含一个根节点 若干个内部节点和若干个叶节点 根节点包含所有样本 各种各样的瓜 内部节点是西瓜的属性 根茎
  • js获取数组中的最大值最小值

    1 遍历方法 var tmp 1 12 8 5 var max tmp 0 for var i 1 i
  • 【hadoop】AccessControlException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS]

    文章目录 1 场景1 1 1 概述 1 2 我的异常 1 场景1 1 1 概述 今天要对接华为的hadoop环境 然后我要执行相关的kerberos认证 然后获取到他们的YarnClient 但是报错 AccessControlExcept
  • 变换的矩阵

    import java io InterruptedIOException import java time chrono JapaneseChronology import java util Scanner public class M
  • SPSS 进行两因素重复测量方差分析(Two-way repeated-measures ANOVA)详细操作步骤 (上)

    一 问题与数据 研究者研究了16名健康人在五种状态 P1 P2 P3 P4 P5 下的参数 MS A MS B MS C MS D 是否存在显著性差异 每种状态下均有参数 MS A MS B MS C MS D 因为自变量均为Within
  • B样条曲线

    学习B样条曲线需要先学习贝塞尔曲线 若未了解 看我一篇上博客https blog csdn net weixin 42513339 article details 83019610 贝塞尔函数不足 由于贝塞尔曲线存在以下不足 1 缺乏局部修