NURBS曲线与曲面

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

https网络编程——如何利用中继证书(凭证)建立服务器证书

参考:如何利用中继证书(凭证)建立服务器证书 地址:https://qingmu.blog.csdn.net/article/details/108225569?spm1001.2014.3001.5502 目录建立服务器证书的前提是要建立中继证书建立服务器证书的具体步骤1、建立一个目录&#x…

上传图片

2019独角兽企业重金招聘Python工程师标准>>> private File imageFile;// 上传文件名称private String imageFileFileName;// 上传文件类型private String imageFileContextType; InputStream is new FileInputStream(imageFile);String suffixName imageFileFileN…

https网络编程——如何利用中继证书(凭证)建立客户端证书

参考:如何利用中继证书(凭证)建立客户端证书 地址:https://qingmu.blog.csdn.net/article/details/108226592?spm1001.2014.3001.5502 目录建立客户端证书的前提是要建立中继证书建立客户端证书的具体步骤1、建立一个目录&#x…

2019.2.4 nfs原理和安装实验

NFS 访问一个本地文件还是NFS共享文件对于客户端而言都是透明的,当文件打开的瞬间,内核会作出一个决定,如果是本地文件内核会将本地NFS共享文件内核会将NFS共享文件的所有引用传递给——》NFS客户端枢中 NFS客户端是通过TCP/IP协议及模块向NF…

形容人的内核是什么意思_成语雪泥鸿爪是形容什么的?雪泥鸿爪什么意思?蚂蚁庄园2020年12月10日答案...

斑马线和斑马什么关系?大家都知道斑马和斑马线,但是两者之间有什么关系?蚂蚁庄园12月10日提到了这个问题,我们一起来看看正确答案吧。问题:斑马线和斑马有什么关系?答案:横线酷似斑马纹答案解析…

.Net 2.0里有一个有用的新功能:迭代器

下面内容节选至MSDN2005。迭代器(C# 编程指南) 迭代器是 C# 2.0 中的新功能。迭代器是方法、get 访问器或运算符,它使您能够在类或结构中支持 foreach 迭代,而不必实现整个 IEnumerable 接口。您只需提供一个迭代器,即…

MySQL 服务器变量 数据操作DML-视图

原文:MySQL 服务器变量 数据操作DML-视图SQL语言的组成部分 常见分类: DDL:数据定义语言 DCL:数据控制语言,如授权 DML:数据操作语言 其它分类: 完整性定义语言:DDL的一部分功能约束约束&#x…

kafka内存不断增加_为什么 Kafka 能这么快的 6 个原因

无论 kafka 作为 MQ 也好,作为存储层也罢,无非就是两个功能(好简单的样子),一是 Producer 生产的数据存到 broker,二是 Consumer 从 broker 读取数据。那 Kafka 的快也就体现在读写两个方面了,下面我们就聊聊 Kafka 快…

https网络编程——DNS域名解析获取IP地址

参考:DNS域名解析 地址:https://qingmu.blog.csdn.net/article/details/115825036?spm1001.2014.3001.5502 1、原理 我在在通过域名解析获取IP的过程中一般使用的是DNS域名解析。 DNS协议是一种应用层协议,他是基于UDP来实现的。 2、代码…

C#桌面时钟

使用C#制作的桌面时钟,提供闹钟功能(虽然很简陋)、万年历功能(包含农历)源码:http://www.cnblogs.com/Files/shiweifu/MyClock.rar截图:适合初学者研究 转载于:https://www.cnblogs.…

小a与黄金街道(欧拉函数)/**模运算规则总结*/

链接:https://ac.nowcoder.com/acm/contest/317/D 来源:牛客网 题目描述 小a和小b来到了一条布满了黄金的街道上。它们想要带几块黄金回去,然而这里的城管担心他们拿走的太多,于是要求小a和小b通过做一个游戏来决定最后得到的黄金…

堆栈认知——逆向IDA工具的基本使用

参考:逆向-IDA工具的基本使用 地址:https://qingmu.blog.csdn.net/article/details/118862881 目录1、文件的打开与关闭2、窗口介绍:图形 文本 其他窗口2.1、图形界面:2.2、文本界面:2.3、反汇编窗口2.4、 十六进制窗口…

堆栈认知——栈溢出实例(ret2text)

参考:栈溢出实例–笔记一(ret2text) 地址:https://qingmu.blog.csdn.net/article/details/119295954 目录1、什么是栈溢出?2、栈结构3、栈溢出需要解决的问题3.1、解决如何跳转的问题3.2、跳转到哪里去?4、…

堆栈认知——栈溢出实例(ret2shellcode)

参考:栈溢出实例–笔记二(ret2shellcode) 地址:https://qingmu.blog.csdn.net/article/details/119303513 目录1、栈溢出含义及栈结构2、ret2shellcode基本思路3、实战一下3.1、二进制程序如下3.2、分析调试查看栈3.3、编写payloa…

Glusterfs初试

Gluster的模式及介绍在此不表,这里只记录安装及配置过程。 1.整体环境 server1 : gfs1.cluster.com server2 : gfs2.cluster.com Client: 2.安装Gluster 下载软件https://access.redhat.com/downloads/content/186/ver3/rhel---7/3.4/x86_64/product-software 下…

堆栈认知——堆简介

参考:Linux笔记–堆简介 地址:https://qingmu.blog.csdn.net/article/details/119510863 目录1、前言2、堆的由来3、Linux中堆简介4、堆分类4.1、请求堆4.2、释放堆5、内存分配背后的系统调用6、堆相关数据结构7、堆的申请8、调试验证1、前言 当前针对各…

如何为 Horizon View 配置 VMware VSAN?

原文:http://myvirtualcloud.net/?p5440注明:本文内容基于 VMwareVSAN beta 版本撰写,请访问http://www.vmware.com/products/virtual-san/获得有关正式版本的更新信息。我已经在前面的文章中讨论了VSAN 给 Horizon View 带来的益处&#xf…

配置vscode远程免密登入Linux服务器

视频教程:https://www.bilibili.com/video/BV1s64y167cM?vd_sourcecc0e43b449de7e8663ca1f89dd5fea7d 参考:配置vscode远程免密登入Linux服务器 地址:https://blog.csdn.net/weixin_54178481/article/details/123977675?spm1001.2014.3001.…

Wss 3.0安装指南(一)

Wss 3.0安装指南(一) "基本" 模式 WSS3.0的安装可分为独立服务器安装和服务器场安装,前者是将所有的服务和应用安装在一台Server 上,后者则是…

智能五子棋基本思路

前些天闲时写的,在学数据结构的时拿来练手的.没技术含量,最有技术含量的AI部分,我是看别人(园子里叫二十四生的)的算法改的.刚弄了一下午小程序弄不过去,头疼,现无聊的紧,闲着发着玩.当消遣主要发下AI核心算法.有兴趣的同学用VB,VC.VC#都可以一起做着玩.保持对编程的兴趣.其它没…