B样条方法在表示与设计自由型曲线曲面形状时显示了强大的威力,然而
在表示与设计初等曲线曲面时时却遇到了麻烦。因为B样条曲线包括其特例的
Bezier曲线都不能精确表示出抛物线外的二次曲线,B样条曲面包括其特例的
Bezier曲面都不能精确表示出抛物面外的二次曲面,而只能给出近似表示。
提出NURBS方法,即非均匀有理B样条方法主要是为了找到与描述自由型曲线
曲面的B样条方法既相统一、又能精确表示二次曲线弧与二次曲面的数学方法。
NURBS方法的主要优点:     
   
  (1)既为标准解析形状(即前面提到的初等曲线曲面),又为自由型曲线
曲面的精确表示与设计提供了一个公共的数学形式。 
   
  (2)修改控制顶点和权因子,为各种形状设计提供了充分的灵活性。
   
  (3)具有明显的几何解释和强有力的几何配套技术(包括节点插入、细
分、升阶等)。 
   
  (4)对几何变换和投影变换具有不变性。
   
  (5)非有理B样条、有理与非有理Bezier方法是其特例。
   
  不过,目前应用NURBS中还有一些难以解决的问题:
   
  (1)比传统的曲线曲面定义方法需要更多的存储空间,如空间圆需7个参
数(圆心、半径、法矢),而NURBS定义空间圆需38个参数。 
   
  (2)权因子选择不当会引起畸变。
   
  (3)对搭接、重叠形状的处理很麻烦。
   
  (4)反求曲线曲面上点的参数值的算法,存在数值不稳定问题。
 
 3.4.1 NURBS曲线的定义  
 
  NURBS曲线是由分段有理B样条多项式基函数定义的:

   
  其中,Ri,k(t)(i=0,1,…,n)称为k阶有理基函数,Ni,k(t)是k 阶B样条
基函数,Pi(i=0,1,…,n)是特征多边形控制顶点位置矢量;w i是与Pi对应
 的权因子,首末权因子w 0,w n>0,其余w i3 0,以防止分母为零及保留凸包
性质、曲线不因权因子而退化为一点;节点矢量为T=[t0, t1, … , ti, …,
点tn+k],节个数是m=n+k+1(n为控制项的点数,k为B样条基函数的阶数)。   
   
  对于非周期NURBS曲线,常取两端节点的重复度为k,即
   
  有:,在大多数实际应用中,a =0,
b =1。P(t)在区间上是一个k-1次有理多项式,P(t)在整条曲线上
具有k-2阶连续性,对于三次B样条基函数,具有C2连续性。当n=k-1时,k阶
NURBS曲线变成k-1次有理Bezier曲线,k阶NURBS曲线的节点矢量中两端节点的
成节点重复度取k+1就使得曲线具有同次有理Bezier曲线的端点几何性质。    
   
  Ri,k(t)具有k阶B样条基函数类似的性质:
   
  (1)局部支承性:Ri,k(t)=0,t? [ti, ti+k];
   
  (2)权性:
   
  (3)可微性:如果分母不为零,在节点区间内是无限次连续可微的,在
节点处 (k-1-r)次连续可导,r是该节点的重复度。 
   
  (4)若w i=0,则Ri,k(t)=0;
   
  (5)若w i=+¥ ,则Ri,k(t)=1;
   
  (6)若w j=+¥ ,且j1 i,则Ri,k(t)=0;
   
  (7)若w j=1,j=0,1,…,n, 则是B样条基函数;若w
jj=1,=0,1,…,n,且,Bi,k(t)是
Bernstein基函数。  
   
  Ri,k(t)与Ni,k(t)具有类似的性质,导致NURBS曲线与B样条曲线也具有类
 似的几何性质:
 
  (1)局部性质。k阶NURBS曲线上参数为的一点
至多与k个控制顶点Pi及权因子有关,与其它顶
点和权因子无关;另一方面,若移动k次NURBS曲线的一个控制顶点Pi或改变所
联系的权因子仅仅影响定义在区间上那部分曲线的形状
   
  (2)变差减小性质。
   
  (3)凸包性。定义在非零节点区间上曲线段
 位于定义它的k+1个控制顶点的凸包内。整条NURBS曲线位于所
 有定义各曲线段的控制顶点的凸包的并集内。所有权因子的非负性,保证了
凸包性质的成立。 
   
  (4)在仿射与透射变换下的不变性。
   
  (5)在曲线定义域内有与有理基函数同样的可微性。
   
  (6)如果某个权因子为零,那么相应控制顶点对曲线没有影响。
   
  (7)若则当时,
   
  (8)非有理与有理Bezier曲线和非有理B样条曲线是NURBS曲线的特殊情
况 。
   
 3.4.2 齐次坐标表示  
 
  为了便于讨论,我们考虑平面NURBS曲线的情况。图3.1.34所示,如果给
一组控制顶点及对应的权因子
则在齐次坐标系xyw中的控制顶点为
齐次坐标下的k阶非有理B样条曲线可表示为:   
 
   
  若以坐标原点为投影中心,则得到平面曲线:
 
 
   
  三维空间的NURBS曲线可以类似地定义。即对于给定的一组控制顶点
 及对应的权因子,则有相应
带权控制点,定义了一条四维的
k阶非有理B样条曲线,然后,取它在第四坐标的超平面上的中心
投影,即得三维空间里定义的一条k阶NURBS曲线。这不仅包含了明确的
几何意义,也说明,非有理B样条的算法可以推广到NURBS曲线,只不过是在  
齐次坐标下进行。  
 
 3.4.3 权因子的几何意义  
 
  由于NURBS曲线权因子w i只影响参数区间定义在区间
上的那部分曲线的形状,因此,我们只考察整条曲线的这一部分。如果固定曲线的参数t,而使变化,则NURBS曲线方程变成以为参数的直线方程,即
NURBS曲线上t值相同的点都位于同一直线上,如图3.1.35所示。我们把曲线与
有理基函数的记号用用如下包含其权因子为变量的记号替代。因当时
的,故该直线通过控制顶点
分别是对应曲线上的点,即
。     

a =Ri,k(t; w i=1 ),b = Ri,k(u)

   
  N,Bi可表示为:
 
   
  用a 、b 可得到下述比例关系:
 
   
  上式是(Pi,Bi,N,B)四点的交比,由此式可知:
   
  (1)若w i增大活减小,则b 也增大或减小,所以曲线被拉向或推离开
 Pi点;  
   
  (2)若w j增大或减小,曲线被推离或拉向Pj(j1 i)。
 
 
 3.4.4 圆锥曲线的NURBS表示  
 
  若取节点向量为,则NURBS曲线退化为二次Bezier曲线,
 
   
  可以证明,这是圆锥曲线弧方程,称为形状因子,的值
确定了圆锥曲线的类型。时,上式是抛物线弧,时,
上式是双曲线弧,时,上式是椭圆弧。且时,上式
退化为一对直线段时,上式退化为连接
两点的直线段,如图3.1.36所示。    
 
 
 3.4.5 NURBS曲线的修改  
 
  NURBS曲线的修改有多种方式,常用的方法有修改权因子、控制点和反插
节点。 
 
  1.修改权因子
   
  权因子的作用是:当保持控制顶点和其它权因子不变,减少或增加某权因
 子时,曲线被推离或拉向相应顶点。假定已给k阶(k-1)次NURBS曲线上参数
为t的一点S,欲将曲线在该点拉向或推离控制顶点一个距离d,以得到新点
,可由重新确定相应的权因子使之改变为来达到,如图3.1.37所示。 
 
 
  其中,表示两点间的距离,d有正负之分,若
间,即曲线被拉向顶点和,d为正,反之为负。
   
  修改过程是拾取曲线上一点,并确定该点的参数,再拾取
控制多边形的一个顶点,它是k+1个控制顶点中的一个,即
,便可算出两点间的距离d。若在直线段上拾取一个点
 ,就能确定替代老权因子的新权因子,修改后的曲线将通过点。  
 
  2.修改控制顶点
   
  若给定曲线上参数为的一点S,方向矢量V和距离d,计算控制顶点
 新位置,以使曲线上S点沿V移动距离d到新位置可表示为: 
 

于是:

由此可得新控制顶点:

 
  3.反插节点
   
  给定控制多边形顶点与权因子及节点矢量
,就定义了一条k阶NURBS曲线。现欲在该多边形的 
的边上选取一点,使得点成为一个新的控制顶点,这就是所谓反插节点。
点可按有理线性插值给出:    
 

于是:

所以

 
  这就是使得成为一个新控制顶点而要插入的新节点。
   
  当插入新节点使成为新控制顶点的同时,将有k-2个老控
制顶点被包括在内的新控制顶点所替代,如图3.1.38所示。 
 
 
 3.4.6 非均匀有理B样条(NURBS)曲面  
 
  1.NURBS曲面的定义
   
  由双参数变量分段有理多项式定义的NURBS曲面是:
 
   
  式中是矩形域上特征网格控制点列,是相应控制点的权因子,规定
四角点处用正权因子,即,其余
是p阶和q阶的B样条基函数,是双变量有理基函数:  
 
   
  节点矢量按de Boor递推
公式决定,通常具有下面的形式: 

p个 q个

p个 q个

   
  2.NURBS曲面的性质
   
  有理双变量基函数与非有理B样条基函数相类似的性质:
   
  (1)局部支承性质:当或
 ; 
   
  (2)权性:
   
  (3)可微性:在每个子矩形域内所有偏导数存在,在重复度为r的u节点
处沿u向是p-r-1次连续可微,在重复度为r的v节点处沿v向是q-r-1次连续可
微;
   
  (4)极值:若p,q>1,恒有一个极大值存在;
   
  (5)是双变量B样条基函数的推广。
   
  NURBS曲面与非有理B样条曲面也有相类似的几何性质,权因子的几何意义
及修改、控制顶点的修改等也与NURBS曲线类似,这里不在赘述。
 
  我们已经知道,计算机中表示形体,通常用线框、表面和实体三种模
型。线框模型和表面模型保存的三维形体信息都不完整,只有实体模型才能
够完整地、无歧义地表示三维形体。前面我们已经介绍了曲线曲面常用的的
表示形式及其理论基础,从本小节开始,我们介绍实体造型技术的有关问题,
 主要包括形体在计算机内的表示、分类求交算法和典型的实体造型系统。  
 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

转载于:https://www.cnblogs.com/skiwnchiwns/p/10344894.html

NURBS曲线与曲面相关推荐

  1. nurbs建模能用MATLAB么,NURBS(matlab生成nurbs曲线图像)

    NURBS是Non-Uniform Rational B-Splines的缩写,是非统一有理B样条的意思.具体解释是: .Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变.当. ...

  2. 计算机图形学 第五章 曲线与曲面(下)

    5.3 B 样条曲线与曲面 B 样条曲线方程的定义 Bezier曲线的不足:阶次较大时特征多边形对曲线的控制将会减弱:没有局部性.不能做局部修改:拼接较复杂 B 样条曲线方程: P ( t ) = ∑ ...

  3. java nurbs几何库_NURBS曲线与曲面

    B样条方法在表示与设计自由型曲线曲面形状时显示了强大的威力,然而 在表示与设计初等曲线曲面时时却遇到了麻烦.因为B样条曲线包括其特例的 Bezier曲线都不能精确表示出抛物线外的二次曲线,B样条曲面包 ...

  4. 理解Nurbs曲线/曲面的参数空间

    人们对计算几何最常见的误解之一与曲线参数有关. 由于 Nurbs 曲线的数学相当复杂--其中大部分肯定超出了高中水平--很难解释控制点坐标.控制点权重.曲线度数和结向量如何共同使 nurbs 曲线的参 ...

  5. 用OpenGL进行曲线、曲面的绘制

    实验目的 理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条 ...

  6. 几何Geometry(2)(曲线和曲面)(笔记)

    文章目录 前言 四.曲线(Curves) 贝塞尔曲线(Bezier Curves) 贝塞尔曲线的德卡斯特里奥算法(Bezier Curves - de Casteljau Algorithm) 三次贝 ...

  7. GAMES101现代计算机图形学入门——几何表示之曲线与曲面

    此为个人学习笔记,总结内容来源于网络各个平台,如有错误欢迎指摘 几何表示 曲线与曲面 本节附加资料: Making things with Maths (acko.net) 游戏开发技术杂谈2:理解插 ...

  8. 什么是NURBS曲线

    NURBS是Non-Uniform Rational B-Splines的缩写,是非统一有理B样条的意思.具体解释是: .Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变.当创 ...

  9. 利用NURBS曲线进行点云曲面拟合算法

    文章目录 介绍 NURBS曲线 C++实现思路 代码实现 读取点云数据 对点云进行预处理 创建曲面模型 将曲面模型转换为NURBS曲面 完整代码 opennurbs.h说明 vs2019安装OpenN ...

最新文章

  1. 【ACM】杭电OJ 1005
  2. class中一个小技巧
  3. 什么是计算机网络中的主机?
  4. ConcurrentHashMap之实现细节(转)
  5. java仿qq gui_Java仿QQ登入页面
  6. mysql无法启动修复_记一次MySQL无法启动及修复经历
  7. JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecut
  8. 95-130-502-源码-source-ElasticSearch相关-ElasticSearch connector
  9. Axure社区产品app原型通用版+prd通用产品需求文档+产品结构+业务流程+社区产品信息结构功能脑图
  10. java面试题-基础篇(万字总结,带答案,面试官问烂,跳槽必备)
  11. PVE安装威联通教程
  12. java环境配好后jar文件打开闪退,无打开方式,无反应
  13. 使用keybase给你的Github commit加上GPG Verified签名认证(keybase教程)
  14. python scapy2.3 在windows上的安装
  15. 群晖消息通知 推送服务器,群晖开启系统信息微信推送服务
  16. Leetcode之恰有K根木棍可以看到的排列数目
  17. Acwing 823.排列
  18. 3D打印无人机等无人设备1——打印机喷头堵塞及喷头损坏更换维修
  19. ThinkPHP5数据库操作
  20. MATLAB产生随机阶跃信号

热门文章

  1. 微信头像单张图片上传
  2. hdu 2531 Catch him
  3. 一个产品留言统计查寻的分析比较
  4. safari 调试iPhone web页面
  5. 笔试小结---非对称加密算法
  6. 【工程师综合项目二】React + Koa2打造『JS++官网管理后台』
  7. Spring Boot实践教程(二):SpringApplication分析
  8. 《 Python树莓派编程》——2.7 总结
  9. Intellij IDEA 快捷键整理(dyCopy)
  10. Xcodebuild自动打包