導航:首頁 > 源碼編譯 > deboor演算法視頻教學

deboor演算法視頻教學

發布時間:2023-03-18 09:34:26

『壹』 求教用VC++實現B樣條曲線的繪制代碼

人碼凳鄭家遲頌做過的,你下載吧:粗飢
http://download.csdn.net/detail/glxabcandy/1846082

『貳』 求一個用python實現的基於deboor-cox的B樣條演算法

『叄』 求常用的圖演算法(C語言描述)

/*Bezier曲線的Casteljau演算法*/

float decas(degree,codff,t)
float coeff[];
float t;
int degree;
{
int r,i;
float t1;
float codffa[10];
t1=1.0-t;
for(i=0;i<=degree;i++)
coeffa[i]=coeff[i];
for(r=1;r<degree;r++)
for(i=0;i<=degree-r;i++)
{
coeffa[i]=t1*coeffa[i]+t*coeffa[i+1];
}
return (coeffa[0]);
}

/*B樣條曲線—deBoor分割演算法*/

float deboor(degree,coeff,knot,u,i)
float coeff[],knot[];
float u;
int degree,i;
{
int k,j;
float t1,t2;
float coeffa[30];
for(j=i-degree+1;j<=i+1;j++)
coeffa[j]=coeff[j-i+degree-1];
for(k=1;i<=degree;k++)
forj=i+1;j>=i-degree+k+1;j--)
{
t1=(knot[j+degree-k]-u)/(knot[j+degree-k]-knot[j-1]);
t2=1.0-t1;
coeffa[j]=t1*coeffa[j-1]+t2*coeffa[j];
}
return (coeffa[i+1]);
}

/*Bezier曲線的Horner演算法*/

float hornbez(degree,coeff,t)
int degree;
float coff[];
float t;
{
int i,n;
float fact,t1,aux;
t1=1.0-t;fact=1.0;n=1;
aux=coeff[0]*t1;

for(i=1;i<degree;i++)
{
face=fact*t;
n=n*(degree-i+1)/i;
aux=(aux+fact*n*coeff[i])*t1;
}
aux=aux+fact*t*codff[degree];
return aux;
}

『肆』 計算機圖形學程序

void CDeBoorView::OnDraw(CDC* pDC)
{
int deg=8;float coeffx[9]={200,50,100,150,200,250,300,350,200};
float coeffy[9]={200,100,50,50,100,50,50,100,200};
float knot[18]={0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2};
CDeBoorDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int L,n1=9,n=100,i,j;
L=n1-deg;
float u;
float ps[100][2];
for(i=0;i<n1;i++){
if(i==0)pDC->MoveTo(coeffx[i],coeffy[i]);
pDC->虧戚LineTo(coeffx[i],coeffy[i]);
}
for(i=deg;i<衫空謹或基L+deg+1;i++){
if(knot[i+1]>knot[i])
for(j=0;j<n;j++){
u=knot[i]+j*(knot[i+1]-knot[i])/n;
ps[j][0]=deboor(deg,coeffx,knot,u,i,pDC);
ps[j][1]=deboor(deg,coeffy,knot,u,i,pDC);

CPen newpen(PS_SOLID,3,RGB(255,0,0));
CPen *old1=pDC->SelectObject(&newpen);
if(j==0)
pDC->MoveTo(ps[j][0],ps[j][1]);
pDC->LineTo(ps[j][0],ps[j][1]);
}
}
}
float CDeBoorView::deboor(int deg,float coeff[],float knot[],float u,int i,CDC*pDC){
int k,j;
float t1,t2;
float coeffa[30];
for(j=i-deg;j<=i;j++)
coeffa[j]=coeff[j];
for(k=1;k<=deg;k++)
for(j=i;j>=i-deg+k;j--)
{
t1=(knot[j]-u)/(knot[j]-knot[j+deg-k+1]);
t2=1.0-t1;
coeffa[j]=t2*coeffa[j-1]+t1*coeffa[j];
}
return(coeffa[i]);
}

『伍』 求;B-樣條曲線的deboor演算法和C++程序

voidCGraph151View::seekPoint(intk)//表示k階2{3CPoint *interim;//存儲B樣數組指針4CDC *pDC =GetDC();5CGraph151Doc *pDoc = GetDocument();//6intj = pDoc->Length-1;7intlength=1.0/0.001;//B樣曲線的點的個數8interim =newCPoint[length];//保存B樣曲線點9intindex_length=0;//記錄interim數組下一個下標10//畫控制點圖11pDC->MoveTo(pDoc->m_point[0]);12for(intn=0;n<pDoc->Length;n++)13{14pDC->LineTo(pDoc->m_point[n]);15pDC->MoveTo(pDoc->m_point[n]);16}17///結束1819for(floatt=pDoc->T[0];t<pDoc->T[pDoc->T_Length-1];t +=0.001)20{21inti;22chushihua();//還原m_point 和 im_point點數組使與初始化相同23for(intr=1;r<k;r++)24{25guodian();//更新一下m_point點數組 的數據26for( i=r;i<=j;i++)27{28floatpara1;29floatpara2;3031if( (pDoc->T[i+k-r] - pDoc->T[i]) !=0.0)32{33para1 = (t - pDoc->T[i]) / (pDoc->T[i+k-r] - pDoc->T[i]);34para2 = (pDoc->T[i+k-r] - t) /(pDoc->T[i+k-r] - pDoc->T[i]);35}36else37{38para1=0.0;39para2=0.0;40}4142intx =int( (para1 * pDoc->m_point[i].x) + (para2 * pDoc->m_point[i-1].x) );43inty =int( (para1 * pDoc->m_point[i].y) + (para2 * pDoc->m_point[i-1].y) );44pDoc->im_point[i].SetPoint(x,y);45}4647}4849interim[index_length++].SetPoint( pDoc->im_point[3].x,pDoc->im_point[3].y);//存儲計算出的點50}5152//畫圖 B樣曲線53CPen pen(PS_SOLID,1,RGB(255,0,0));54pDC->SelectObject(pen);55pDC->MoveTo(interim[0]);56for(intn=0;n<length;n++)57{58pDC->LineTo(interim[n]);59pDC->MoveTo(interim[n]);60}61//B樣曲線畫圖結束62}

『陸』 deboor演算法生成B樣條小問題

degree曲線次數,coeff[]控制點序列,knot[]節點矢量斗州,u插值點悔棚,coeffa[30]臨時存碧銷則儲數組。

『柒』 德氏高速算術法

全名是德布爾演算法。
德布爾演算法是數學上的一種高級快速演算法,別名也叫作德氏高速算術法。
數學的子領域數值分析中,德布爾演算法(DeBooralgorithm)是快速而且數值上穩定的演算法,用於計算B樣條形式的樣條曲線。這是用於貝茲曲線的deCasteljau演算法的一個推廣。

閱讀全文

與deboor演算法視頻教學相關的資料

熱點內容
如何查看伺服器系統版本信息 瀏覽:512
成都市土地出讓金演算法 瀏覽:700
鋼筋加密標記 瀏覽:573
ps中擴展功能在文件夾的什麼位置 瀏覽:903
雙極壓縮機為什麼要先高壓 瀏覽:527
蘋果手機伺服器填什麼 瀏覽:832
android移動動畫效果 瀏覽:691
電子和伺服器是什麼意思 瀏覽:691
phpurl中文亂碼問題 瀏覽:893
程序員那麼可愛大結局陸漓產子 瀏覽:538
java如何從雲伺服器讀取本地文件 瀏覽:923
壓縮空氣軟管製作方法 瀏覽:911
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:529
安卓怎麼弄成蘋果在線 瀏覽:435
谷歌web伺服器地址 瀏覽:900
安卓鎖屏圖片如何刪除 瀏覽:720
python3多進程編程 瀏覽:715
證明代碼是程序員寫的 瀏覽:397