B样条曲线曲面和NURBS曲线曲1.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
B 样条曲线曲面和 NURBS 曲线曲面 (学习笔记和上机练习) 非均匀有理 B 样条,通常简称为 NURBS(Non-Uniform Rational B-Splines)。NURBS 是非有理 B 样条、有理以及非有理 Bézier 曲线曲面的推广。 一、要对 B 样条曲线曲面和 NURBS 曲线曲面有所了解应先了解 B 样条基函数 B 样条基函数的定义和性质 令U ? ?u 0 , u ,...,u 1 m ?是一个实数列,即u i ≤ u i?1 ,i=0,1,…,m-1。其中,u i  称为节点, U 称为节点矢量,用 N (u) 表示第 i 个 p 次( p +1 阶)B 样条基函数,其定义为 i, p ?1, N i,0 (u) ? ? ?0, 若u ≤ u < u i  i?1 值为 1,其他值为 0 N (u) ? u ? u i N (u) ? u ? u i? p?1 N  (u) (2) i, p 由(2)式可知: u ? u i? p i i, p?1 u i? p?1 u i?1 i?1, p?1 N (u) 是一个阶梯函数,它在半开区间u ?[u , u ) 外都为零; i,0 i i?1 当 p >0 时, N (u) 是两个 p -1 次基函数的线性组合; i, p 计算一组基函数时需要事先指定节点矢量U 和次数 p ; (4)(2)式中可能出现 0/0,我们规定 0/0=0; N (u) 是定义在整个实数轴上的分段多项式函数,只在区间[u u ] 上有意义; i, p 0, m 半开区间[u , u ) 称为第 i 个节点区间,长度可以为零,因相邻节点可以相同; i i?1 B 样条基函数的一些重要性质: 1 如果u ?[u , u ) ,则 N (u) =0。 i i? p?1 i, p 2 对于所有的i, p 和u ,有 N (u) ≥0. i, p 对于任意的节点区间[u i , u i?1 ) ,当u ?[u i , u i?1 ) 时, ?i  N j , p (u) ? 1 。 j ?i? p 在节点区间内部, Ni, p (u) 是无限次可微的。在节点处 Ni, p (u) 是 p ? k 次连续可微的,其中k 是节点的重复度。 除 p ? 0 的情况外, Ni, p (u) 严格的达到一次最大值。 B 样条基函数的导数 基函数的求导公式为 N ? ? p N (u) ? p N (u) (4) i, p u ? u i? p i i, p?1 u i? p?1 u i?1 i?1, p?1 根据求导法则( fg )? ? f ?g ? fg ? ,对基函数 u ? u u ? u N (u) ? i N (u) ???i? p?1 N (u) i, p u ? u i? p i i, p?1 u i? p?1 u i?1 i?1, p?1 求导得到一般的求导公式: N ( k ?1) N ( k ?1) N ( k ) ? p( i, p?1 ? i?1, p?1 ) (5) i, p u u i? p i u i? p?1 u i?1 另一个计算B 样条基函数各阶导数的公式(参考[Butt76]): N (k ) ? p ( u ? ui  N (k ) ui? p?1 ? u  N (k )  ) , k ? 0,1, …, p ? 1 (6) i, p p ? k u ? u i? p i i, p?1 u i? p?1 u i?1 i?1, p?1 B 样条基函数的一些重要计算 a – 确定节点( u )在节点矢量(U )的区间下标(据u ?[u , u ) 区间) i i?1 //确定参数u 所在的节点区间下标 //n=m-p-1 //m 为节点矢量U[]的最大下标 //p 为 B 样条函数次数 int Buspan(int n,int p,float u,float U[]) { int low,high,mid; if(u==U[n+1])//特殊情况return n; //进行二分搜索low=p; high=n+1; mid=(int)(low+high)/2; while(uU[mid]||uU[mid]) { if(uU[mid]) high=mid; else low=mid; mid=(int)(low+high)/2; if(u=U[mid]uU[mid+1])//找到u 所在的节点区间的下标 break; //退出二分搜索 } return mid; //返回区间下标 } b – 计算节点参数u 的所有非零B 样条基函数值(据定义(2)式)

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档