B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc

B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc

ID:25874313

大小:173.00 KB

页数:27页

时间:2018-11-23

B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc_第1页
B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc_第2页
B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc_第3页
B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc_第4页
B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc_第5页
资源描述:

《B样条曲线曲面和NURBS曲线曲面C语言算法源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、学习小结:前面学习了Bezier曲线,B样条基函数和B样条曲线的一些基础知识。掌握关键问题是一条B样条曲线间的多段曲线的光滑连接。因为现在是用多段Bezier曲线来描绘一条B样条曲线,所以问题变为两段Bezier曲线间光滑连接。两段Bezier曲线段(3次)B1和B2光滑连接的条件:(1).要求B1和B2有共同的连接点,即G0连续。(2).要求B1和B2在连接点处有成比例的一阶导数,即G1连续。由端点处的一阶导数,为实现G1连续,则有:即:这也表明,三点共线。如下图表示了一条3次B样条曲线的所有控制多边形:(P1)P2P3P4(P11)(P12)

2、P5P10P0P6P9P7P8图5.3次B样条曲线和所有控制多边形图5中,P0至P6为原始3次B样条曲线控制多边形顶点,P0至P12是计算后最终形成B样条曲线控制多边形顶点。图6.双二次(2x2)B样条曲面6.B样条曲线曲面和NURBS曲线曲面的C语言实现算法源程序#ifndef_mynurbs_h#ifndef_MYNURBS_H#include"glgl.h"#include"math.h"//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*B样条基函数计算部分*-*-*-*-*-*-*-*-*-*-*-*-*-*//确定参数u所

3、在的节点区间下标//n=m-p-1//m为节点矢量U[]的最大下标//p为B样条函数次数intFindSource(intn,intp,floatu,floatU[]){intlow,high,mid;if(u==U[n+1])//特殊情况returnn;//进行二分搜索low=p;high=n+1;mid=(int)(low+high)/2;while(u

4、

5、u>U[mid]){if(u=U[mid]&&u

6、1])//找到u所在的节点区间的下标break;//退出二分搜索}returnmid;//返回区间下标}//计算所有非零B样条基函数并返回其值//i为参数u所在的节点区间下标voidBasisFunction(inti,intp,floatu,floatU[],floatN[]){intj,di,dp,k;floattul,tur,left,right;floattmpN[50][50];for(k=0;k<=p;k++){dp=0;for(di=i+p-k;di>=i-k;di--){if(u>=U[di]&&u

7、][0]=1;elsetmpN[di][0]=0;dp+=1;for(j=1;j

8、-------------------------------------------------//计算基函数的1阶导数并保存在NP[]中//i为参数u所在的节点区间下标//p为B样条函数次数P>2voidDerBasisFunc(inti,intp,floatu,floatU[],floatNP[]){intj,di,dp,k;floattul,tur,left,right,saved,dl,dr;floattmpN[50][50];for(k=0;k<=p;k++){dp=0;for(di=i+p-k;di>=i-k;di--){if(u>

9、=U[di]&&u

10、[j-1]);saved=p*(dl*tmpN[di][j-1]-dr*tmpN[di+1][j-1])/(p+p-1);}}NP[i-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。