![C++下的B樣條曲線_第1頁](http://file4.renrendoc.com/view/c054610829a7408f1b1a95ed61cfb0b9/c054610829a7408f1b1a95ed61cfb0b91.gif)
![C++下的B樣條曲線_第2頁](http://file4.renrendoc.com/view/c054610829a7408f1b1a95ed61cfb0b9/c054610829a7408f1b1a95ed61cfb0b92.gif)
![C++下的B樣條曲線_第3頁](http://file4.renrendoc.com/view/c054610829a7408f1b1a95ed61cfb0b9/c054610829a7408f1b1a95ed61cfb0b93.gif)
![C++下的B樣條曲線_第4頁](http://file4.renrendoc.com/view/c054610829a7408f1b1a95ed61cfb0b9/c054610829a7408f1b1a95ed61cfb0b94.gif)
![C++下的B樣條曲線_第5頁](http://file4.renrendoc.com/view/c054610829a7408f1b1a95ed61cfb0b9/c054610829a7408f1b1a95ed61cfb0b95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基本思路:namespacesp/樣條曲線曲面域名空間static doubleeps = 1.0e-8;/精 度設(shè)定精度void SetEps(double Eps)if(Eps b|a -b;/ k次規(guī)范B樣條基函數(shù)double N(int i,int k,double su,double u)if(k=0)if(u-su0 =sui&u 0)if(MBiger(sui+k-sui,eps)&MBiger(sui+k+1-sui+1,eps)return (u-sui)*N(i,k-1,su,u)/(sui+k-sui)+(sui+k+1-u)*N(i+1,k-1,su,u)/(sui+k
2、+1-sui+1);else if(!MBiger(sui+k-sui,eps)&MBiger(sui+k+1-sui+1,eps)return (sui+k+1-u)*N(i+1,k-1,su,u)/(sui+k+1-sui+1);else if(MBiger(sui+k-sui,eps)&!MBiger(sui+k+1-sui+1,eps)return (u-sui)*N(i,k-1,su,u)/(sui+k-sui);elsereturn0.0;elsereturn0.0;/B樣條曲線double BSL1(int k,double su,double d,int n,double u)
3、int i;double s=0.0;for(i=0;i n;i+)s=s+di*N(i,k,su,u);return s;德布爾算法計(jì)算B樣條曲線inline double alpha(int l,int j,int k,double su,double u)if(suj+k+1-l-suj -eps) return 0.0;return (u-suj)/(suj+k+1-l-suj);double d1(int l,int j,int k,double su,double d,double u)if(l =0) return dj;double a=alpha(l,j,k,su,u);re
4、turn (1-a)*d1(l-1,j-1,k,su,d,u)+a*d1(l-1,j,k,su,d,u);double BSL(int k,double su,double d,int n,double u)int i;for(i=1;i n+k;i+)if(u k&u=sui) break;i-; return d1(k,i,k,su,d,u);德布爾算法計(jì)算B樣條曲線的導(dǎo)矢double d2(int l,int j,int k,double su,double d,double u)if(l =0) return dj;double z=suj+k+1-l-suj;if(z -eps) r
5、eturn 0.0;return (k+1-l)*(d2(l-1,j,k,su,d,u)-d2(l-1,j-1,k,su,d,u)/z;double GetDerValue(int k,double su,double d,int n,int r,double u) int i,j;double s=0.0;for(i=1;i n+k;i+)if(u k&u=sui) break;i-;for(j=i-k+r;j =i;j+)s+=d2(r,j,k,su,d,u)*N(j,k-r,su,u); return s;/B樣條曲面double BSS(int k,double su,int l,do
6、uble sv,double *d,int m,double u,int n,double v) int i,j;double s=0.0;for(i=0;i m;i+)for(j=0;j n;j+)s=s+dij*N(i,k,su,u)*N(j,l,sv,v);return s;/NURBS 曲線double NURBSL(int k,double su,double d,double w,int n,double u) int i,t=k;double s1=0.0,s2=0.0,wN;for(i=0;i n+1;i+)if(u =sui)t=i-1;break;if(t k)t=k;fo
7、r(i=t-k;i eps|s2 -eps)return s1/s2;else return 0.0;/NURBS 曲面double NURBSS(int k,double su,int l,double sv,double *d,double *w,int m,double u,int n,double v) int i,j,tu=k,tv=l;double s1=0.0,s2=0.0,wN;for(i=0;i m+1;i+)if(u =sui)tu=i-1;break;for(j=0;j n+1;j+) if(v =svj)tv=j-1;break;if(tu k)tu=k;if(tv l
8、)tv=l;for (i=tu-k;i =tu;i+)for(j=tv-l;j eps|s2 -eps)return s1/s2;else return 0.0; /均勻B樣條曲線double UBSL(int k,double d,int n,double u)double s,*su=new doublen+k+1;int i;for (i=0;i n+k+1;i+)sui=double(i)/(n+k);s=BSL(k,su,d,n,u);delete su;return s; /準(zhǔn)均勻B樣條曲線doubleQUBSL(intk,double d,intn,double u)double
9、s,*su=newdoublen+k+1;int i;for(i=0;i k;i+)sui=0.0;for(i=k;i =n;i+) sui=double(i-k)/(n-k);for(i=n+1;i n+k+1;i+)sui=1.0;s=BSL(k,su,d,n,u);delete su;return s;/均勻B樣條曲面double UBSS(int k,int l,double *d,int m,double u,int n,double v)double s,*su=new doublem+k+1,*sv=new doublen+l+1;int i;for( i=0;i m+k+1;i
10、+) sui=double(i)/(m+k);for( i=0;i n+l+1;i+)svi=double(i)/(n+l);s=BSS(k,su,l,sv,d,m,u,n,v);delete su;delete sv;return s; /準(zhǔn)均勻B樣條曲面double QUBSS(int k,int l,double *d,int m,double u,int n,double v)double s,*su=new doublem+k+1,*sv=new doublen+l+1;int i;for(i=0;i k;i+)sui=0.0;for(i=k;i =m;i+) sui=double(
11、i-k)/(m-k);for(i=m+1;i m+k+1;i+)sui=1.0;for(i=0;i l;i+)svi=0.0;for(i=l;i =n;i+) svi=double(i-l)/(n-l);for(i=n+1;i n+l+1;i+)svi=1.0;s=BSS(k,su,l,sv,d,m,u,n,v);delete su;delete sv; return s; 非均勻三次B樣條Riesenfeld方法void RiBSL(double *dx,double *dy,int n,double u,double *x,double *y) int i;double *su=new doublen+3;double *l=new doublen;double L=0.0,l1;l0=0.0;for(i=1;i n;i+)li=sqrt(pow2(dx
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 13《我能行》(說課稿)-2023-2024學(xué)年統(tǒng)編版道德與法治二年級下冊
- Unit 6 How do you feel Part B Read and Write(說課稿)-2024-2025學(xué)年人教PEP版英語六年級上冊
- 6《一封信》說課稿-2024-2025學(xué)年統(tǒng)編版語文二年級上冊
- 12 低碳生活每一天 第二課時(shí) 說課稿-2023-2024學(xué)年道德與法治四年級上冊統(tǒng)編版001
- 2025城市房屋拆遷安置補(bǔ)償合同
- 公司轉(zhuǎn)讓工程合同范本
- 6《探訪古代文明》說課稿-2023-2024學(xué)年道德與法治六年級下冊統(tǒng)編版
- 鋁合金踢腳線施工方案
- 項(xiàng)目租車方案
- 住建部 認(rèn)購合同范例
- 2024年國家焊工職業(yè)技能理論考試題庫(含答案)
- 特魯索綜合征
- 視頻監(jiān)控系統(tǒng)工程施工組織設(shè)計(jì)方案
- 食堂食材配送采購 投標(biāo)方案(技術(shù)方案)
- 2024年山東省泰安市高考語文一模試卷
- 全國助殘日關(guān)注殘疾人主題班會課件
- TCL任職資格體系資料HR
- 《中國古代寓言》導(dǎo)讀(課件)2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 五年級上冊計(jì)算題大全1000題帶答案
- 工會工作制度匯編
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
評論
0/150
提交評論