B樣條曲線曲面和NURBS曲線曲面C語言算法源程序.doc

B樣條曲線曲面和NURBS曲線曲面C語言算法源程序.doc

ID:25874313

大小:173.00 KB

頁數(shù):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》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、學習小結(jié):前面學習了Bezier曲線,B樣條基函數(shù)和B樣條曲線的一些基礎(chǔ)知識。掌握關(guān)鍵問題是一條B樣條曲線間的多段曲線的光滑連接。因為現(xiàn)在是用多段Bezier曲線來描繪一條B樣條曲線,所以問題變?yōu)閮啥蜝ezier曲線間光滑連接。兩段Bezier曲線段(3次)B1和B2光滑連接的條件:(1).要求B1和B2有共同的連接點,即G0連續(xù)。(2).要求B1和B2在連接點處有成比例的一階導(dǎo)數(shù),即G1連續(xù)。由端點處的一階導(dǎo)數(shù),為實現(xiàn)G1連續(xù),則有:即:這也表明,三點共線。如下圖表示了一條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語言實現(xiàn)算法源程序#ifndef_mynurbs_h#ifndef_MYNURBS_H#include"glgl.h"#include"math.h"http://*-*-*-*-*-*-*-*-*-*-*-*-*-*-*B樣條基函數(shù)計算部分*-*-*-*-*-*-*-*-*-*-*-*-*-*//確定參數(shù)u所

3、在的節(jié)點區(qū)間下標//n=m-p-1//m為節(jié)點矢量U[]的最大下標//p為B樣條函數(shù)次數(shù)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所在的節(jié)點區(qū)間的下標break;//退出二分搜索}returnmid;//返回區(qū)間下標}//計算所有非零B樣條基函數(shù)并返回其值//i為參數(shù)u所在的節(jié)點區(qū)間下標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、-------------------------------------------------//計算基函數(shù)的1階導(dǎo)數(shù)并保存在NP[]中//i為參數(shù)u所在的節(jié)點區(qū)間下標//p為B樣條函數(shù)次數(shù)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-

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。