實驗67Bezier曲線填充課件_第1頁
實驗67Bezier曲線填充課件_第2頁
實驗67Bezier曲線填充課件_第3頁
實驗67Bezier曲線填充課件_第4頁
實驗67Bezier曲線填充課件_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

實驗6

一輛老爺車

區(qū)域填充算法要求:(1)車身涂上色彩,不調(diào)用填色函數(shù),譬如floodfill();即用種子填充算法或掃描線填充(2)

輪胎可畫成填充圓,用fillellipse(dotx,doty,t,t);填色-古董車(會跑?)

實驗7

改裝的小轎車

Bezier曲線/曲面繪制說明:(1)車蓋是Bezier曲線或(2)小車跑動時,輪子會轉(zhuǎn)動

折線變曲線,舊式老爺車變新式小轎車可添加高級功能:輪子會轉(zhuǎn)動完成的工作:實現(xiàn)二維旋轉(zhuǎn),集成到整車中要求:能看得出輪子會轉(zhuǎn)動,即輪子修飾下,否則看不出會轉(zhuǎn)動Alternative(實驗7):用Bezier曲線繪制一個“大”字TipsObtainingthecoordinatesoftheControlpointsApproach1:getthepositionbytheprogramApproach2:byusingphotoshopNoticethat:兩種方式所獲坐標(biāo)系統(tǒng)不同h+bhh+bhmoveto(x0-h,y0-h);lineto(x0-h-b,y0);lineto(x0-2*h,y0);lineto(x0-2*h-b,y0);lineto(x0-2*h-b,y0+h);lineto(x0+2*h+b,y0+h);lineto(x0+2*h+b,y0);lineto(x0+h+b,y0);lineto(x0+h,y0-h);lineto(x0-h,y0-h);提示:c=getpixel(x,y)用flag標(biāo)記當(dāng)前遇到的是奇數(shù)個交點還是偶數(shù)個交點fillellipse(dotx,doty,t,t);Voidmain(){…//調(diào)用畫出車形函數(shù)getchar();…//調(diào)用填色函數(shù)getchar();…//調(diào)用汽車開動函數(shù)}update車蓋2組4個控制點:用DeCasteljian算法繪制一條3次Bezier曲線or用Bezier曲線定義算法繪制一條3次曲線繪制一條3次Bezier曲線1用DeCasteljian算法(參見隨后的ppt)輸入:4個控制頂點,譬如CPointcontrol_p[4]={{50,50},{100,240},{420,300},{450,30}};輸出:一條3次Bezier曲線三次Bezier曲線

(x1,y1)(x2,y2)(x3,y3)(x0,y0)voidbezcurve(CPoint*control_p,floatstep){floatx,y;CPointcp;moveto(control_p[0].x,control_p[0].y);while(step<1.001){step+=0.01;cp=DeCas(control_p,step);lineto(cp.x,cp.y);}}用DeCasteljian繪制Beziere曲線:CPointDeCas(CPoint*contol_p,floatu){CPointQ[Degree+1];inti,k;for(i=0;i<Degree;i++){Q[i].x=contol_p[i].x;Q[i].y=contol_p[i].y;}。。。。。。。。returnQ[0];}for(k=1;k<=Degree;k++)for(i=0;i<Degree-k;i++){Q[i].x=(int)((1.0-u)*Q[i].x+u*Q[i+1].x);Q[i].y=(int)((1.0-u)*Q[i].y+u*Q[i+1].y);}賦初值求值繪制一條3次Bezier曲線2借助Bezier曲線定義輸入:4個控制頂點,(可以是前4個控制點平移t距離)輸出:一條3次Bezier曲線在給定空間n+1個點P0,P1,Pn,稱下列參數(shù)曲線為n次的Bezier曲線其中,是Bernstein基函數(shù),即Bezier曲線的定義n次Bezier曲線數(shù)學(xué)表達(dá)式n次Bezier曲線數(shù)學(xué)表達(dá)式為:三次Bezier曲線的數(shù)學(xué)表達(dá)式為:x(t)=(1-t)3x0+3t(1-t)2x1+3t2(1-t)x2+t3x3y(t)=(1-t)3y0+3t(1-t)2y1+3t2(1-t)y2+t3y3(0≤t≤1)以下為供參考的程序設(shè)計部分語句:xs=x(0):ys=y(0):t=0.01While(t<=1.0000001){xe=(1-t)*(1-t)*(1-t)*x[0]+3*t*(1-t)*(1-t)*x[1])+3*t*t*(1-t)*x[2]+t*t*t*x[3]ye=(1-t)*(1-t)*(1-t)*y[0]+3*t*(1-t)*(1-t)*y[1]+3*t*t*(1-t)*y[2]+t*t*t*y[3]line(xs,ys,xe,ye)xs=xe;ys=ye:t=t+0.01}附加題

+plus繪制一個3×3階Bezier曲面定義:

在空間給定(n+1)*(m+1)個點Pi,j,,稱下列張量積形式曲面為n*m次Bezier曲面:

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論