用matlab实现三次 NURBS插值曲线.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用matlab实现三次 NURBS插值曲线.doc

用matlab实现 NURBS插值曲线 ?????????????作者:大漠孤狼??????? 发表于matlab乐园() 作者:这是我在大学时做大学生研究计划时写的,当时刚学会matlab ,编写了这个程序,用了很多循环,效率不高.当时我并不清楚循环是matlab的弱点,等明白了,也不做这方面的工作了,也就懒的去改写了.如果谁需要用,就自己改吧.算法也有一些问题,我就不多说了,自己看吧 ?? NURBS插值算法 ?? 给定平面控制顶点di(i=1,2,…n)及对应的权因子?(i=1,2,…n),可定义一条三次NURBS曲线。先对控制顶点进行参数化,得一矢量: ??????????????????? U=[u0,u1,u2…,un+4] ??? 则三次NURBS曲线的分段方程形式为: ?????????? ?????u[uk+3,uk+4]? k=0,1,2,…,n-3?????? (1) ??? 首先证明一条性质: ??? 若三点dk,dk+1,dk+2共线,且满足 ??????????? 则三次NURBS曲线插值点dk+1. ??? 证明:由(1)式可得: ????????? ?????? ??? 由以知可得 ?????? ????? ??? 故性质得证。 ??? 下面构造三次?????? NURBS插值曲线; ??? 取一型值点列V0,V1,V2,…Vn,用下列方法决定各点Vi处的切矢Ti: ??? 设顺序五个数据点Vi-2,Vi-1,…,Vi+2,在中间数据点Vi的切矢ti被局部定义为 ???????????? ti=(1-a)Δpi-1+aΔpi ??? 其中,Δpi=pi+1-pi?????????? a=, ???????????? A=????? B= ??? 在非周期情况下,首末各两数据点处的切矢可采用贝塞尔条件确定,即用如下差分矢量?????????? Δp-1=2Δp0-Δp1????????????? Δp-2=2Δp-1-Δp0 ????????????? Δpn=2Δpn-1-Δpn-2????????? Δpn+1=2Δpn-Δpn-1 ??? 仍按前述公式确定t0,t1,tn-1,tn。 ??? 下面,我们令d3i=pi (i=1…n) ??? 然后对数据点d3i进行参数化 ??? u0=u1=u2=u3=0 ???? ???????(i=2,3,…,n) ??? u3n+1=u3n+2=u3n+3=u3n+4=1 ??? 在区间[u3i,u3(i+1)]插入节点u3i+1 ,u3i+2 ?????? u3i+1=??????????? ??? 即得节点矢量。 ??? 下面在点d3i ,d3(i+1) (i=0 , 1 , … ,n-1) 之间插入两个辅助控制顶点 d3i+1 , d3i+2 ,构成新控制顶点组,得分段三次NURBS方程。 ??? 我们按下列原则判断两型值点 pi (d3i) , pi+1( d3(i+1) ) 之间的曲线段是否有拐点出现:如果矢量乘积ai-1×ai 与ai×ai+1同向,则pi 与pi+1之间无拐点,此时两切线Li , Li+1之间有一交点 ????????????? Vi*=Vi+ ??? 否则,Vi 与Vi+1 之间有一拐点,记 ????????????? Vi*=(Vi+Vi+1)/2 ??? 令 ???????T0 = ????? ????????????? Ti = min { ?,?}???? (i = 1 , 2 , 3 …… , n-1) ????????????? Tn = ??? 我们按下列方法决定 Vi 与 Vi+1 之间的辅助点 d3i+1 , d3i+2 ??? 讨论在区间 [u3i+2 , u3i+3]上的曲线段 ????????????? ????????????u∈[u3i+2 , u3i+3 ] ??? 令 d3i = Vi , i = 0 , 1, 2 ,……, n ?????? d3i+1 = Vi + ???????????(0 i Ti ) ?????? d3i+2 = Vi - ???????(0 i+1 Ti+1 ) ???? 由此三式得 ????? ??? 由性质可得 P( u3i+2 ) = d3i , 即此曲线插值点 d3i ( Vi ) . ? ? ? ? ? 二、基函数计算及整体表示 1,? 根据伯恩斯坦多项式可计算 Ni , 3( u )=+ ??????? + ??????? + ??????? 整理后得: ①Ni+1,0 的系数 (-1/(u(3+i)-u(i))/(u(3+i)-u(1+i))/(u(2+i)-u(1+i))-1/(u(4+i)-u(1+i))/(u(3+i

文档评论(0)

rfxo + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档