第4章曲线和曲面.pptVIP

  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文档。上传文档
查看更多
2 1 + - k i P 2 + - k i P i P ] 1 [ 2 + - k i P ] 1 [ 3 + - k i P ] 1 [ i P ] 2 [ 3 + - k i P ] 2 [ i P ] 3 [ 4 + - k i P ] 1 [ - k i P 1 + - k i P + - k i P i P ] 1 [ 2 + - k i P ] 1 [ 3 + - k i P ] 1 [ i P ] 2 [ 3 + - k i P ] 2 [ i P ] 3 [ 4 + - k i P ] 1 [ - k i P 2 1 + - k i P 2 + - k i P i P ] 1 [ 2 + - k i P ] 1 [ 3 + - k i P ] 1 [ i P ] 2 [ 3 + - k i P ] 2 [ i P ] 3 [ 4 + - k i P ] 1 [ - k i P 1 + - k i P + - k i P i P ] 1 [ 2 + - k i P ] 1 [ 3 + - k i P ] 1 [ i P ] 2 [ 3 + - k i P ] 2 [ i P ] 3 [ 4 + - k i P ] 1 [ - k i P void bspline_to_points(Point CP[], int n, int k, double knot[], Point pts[], int npoints){ double u,delt; int i,j; //在每个节点区间,将参数t变化区间进行npoints等分 delt=(knot[n+1]-knot[k-1])/(double)npoints; i=k-1; u=knot[k-1];//u=knot[i]; for(j=0;j=npoints;j++){ while((in)(uknot[i+1]))i++;//确定参数u所在的节点区间[ui,ui+1) //在每个节点区间,分别求出npoints个离散点pts的坐标 pts [j]= deboor (CP, i, k, knot, u); u+=delt; } } //输入参数CP为控制点坐标 //控制点P的个数为n+1 //输入参数k为B样条曲线的阶数 //输入参数knot为B样条曲线节点向量 //节点向量knot的长度为n+k+1 //输出参数为采用de Boor算法生成的B样条曲线上的离散点序列pts //整条曲线离散点序列pts的个数为npoints+1 //输入参数CP为控制点坐标 //输入参数i代表第i个节点区间,即第i个曲线段 //输入参数k为B样条曲线的阶数 //输入参数knot为B样条曲线节点向量 //u为参数值,其变化范围为节点区间[ui,ui+1) //函数返回值为B样条曲线在参数为t的坐标值 Point deboor(Point CP[], int i, int k, double knot[], double u){ double denom, alpha; Point *p=new Point[k]; const double epsilon=0.0005; for(int j=0;jk;j++) p[l]=CP[i-k+j+l]; //进行k-1次循环,即进行k-1级递推 for(int r=1;rk;r++){ //在每一级递推中,按照递减的顺序对控制顶点进行更新 //按递减顺序更新,是为了确保已更新的控制顶点 //不会对未更新的控制顶点的计算产生影响 for(int m=k-1;m=r;m--){ denom=knot[m-r+i+1]-knot[m+i-k+1];//避免重节点除0 if(fabs(denom)epsilon) alpha=0; else alpha=(u-knot[m+i-k+1])/denom; p[m].x=(1-alpha)*p[m-1].x+alpha* p[m].x; p[m].y=(1-alpha)*p[m-1].y+alpha* p[m].y; } } return p[k-1]; } 节点 r=1 r=2 ┅ ┅ ┅ r=k-1 m=1 u[i+1] m=2 u[i+2] u[i+1] ┇ ┇ ┇ u[i+1] ┇ u[i+m] u[i+m-1] ┇ u[i+1] ┇ ┇ ┇ u[m-r+i+1] ┇ u[i+1] m=k-1 u[i+k] u[i+k-1] ┇ u[i+k-r] u[i+2] u[i+1] (2)de Boor算法的几何意义 2 1 + - k i P 2 + - k i P i P ] 1 [ 2 + -

文档评论(0)

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

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

1亿VIP精品文档

相关文档