freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

計算機圖形學第1-5章課后習題參考答案-在線瀏覽

2024-07-29 18:58本頁面
  

【正文】 由于最大位移方向為x,因此其基本原理:每次x方向上走一步,而y方向上或減1或減0。到底選取哪一個候選點依舊用中點進行判別。構(gòu)造判別式di=F(xM, yM)= F(xi +1, )=(xi +1)2+()2 R2(1) 當di0,取Pu(xi +1, yi),計算下一步的的判別式 di+1=F(xu, yu)= F(xi +2, )= (xi +2)2+()2 R2= di+2xi+3 所以沿正右方向,di的增量為2xi+3。顯然,所繪制圓弧段的第一個像素為P0(0, R),可以令d’=,則判別式di0對應(yīng)于di,由于d始終是整數(shù),di0。Si(X)(i=1,2,3),設(shè)邊界條件為拋物線端(, )(, )(, )(, )解:m1=x2x1=, m2=x3x2=, m3=x4x3=1。u2=m1/(m1+m2)=。u3=m2/(m2+m3)=。R3=3*[u3*(y4y3)/m3+λ3*(y3y2)/m2]=。d1=0。d2=64/513。d3=0。解:用矩陣表示為p(t)=[t3 t2 t 1]P[p0 p1 p2 p3]TP= 1 3 3 1 3 6 3 0 3 3 0 0 1 0 0 0p(0)=[5, 5]p()=[, ]p()=[, ]p()=[, ]p()=[, ]p()=[, ]p(1)=[10, 5]將上面各點相連可以畫出三次貝塞爾曲線。該程序根據(jù)以下數(shù)據(jù)點[x, y]:[50, 100] [80, 230] [100, 270] [140, 160] [180, 50] [240, 65] [270, 120] [330, 230] [380, 230] [430, 150]計算出結(jié)果,并實現(xiàn)三段首尾相接的三次貝塞爾曲線在屏幕上顯示的功能,采用了C++語言實現(xiàn);include include include typedef struct{ double x,y。 //定義結(jié)構(gòu)體class Bezier //定義Bezier類{ private: DPOINT* bP。 void drawFrame()。 void drawCurve(int p0,int p1,int p2,int p3)。 //定義構(gòu)造函數(shù) void draw()。Bezier::Bezier(DPOINT* p,int len) //構(gòu)造函數(shù)的實現(xiàn){ this bP=p。}void Bezier::draw() //通過公有函數(shù)調(diào)用私有函數(shù){ drawFrame()。}void Bezier::drawFrame() //其功能是繪制出多邊形和各個端點{ setcolor(12)。im_maxIndex。 //繪制多邊形 circle(bP[i].x, bP[i].y,5)。}void Bezier::drawCurve() //實現(xiàn)多段Bezier曲線繪制的功能{ for(int i=0。i+=3) { drawCurve(i,i+1,i+2,i+3)。 double tmpy=。 for(。t+=) { tmpx=(bP[p0].x+3*bP[p1].x3*bP[p2].x+bP[p3].x)*t*t*t+(3*bP[p0].x6*bP[p1].x+3*bP[p2].x)*t*t+(3*bP[p0].x+3*bP[p1].x)*t+bP[p0].x。 putpixel(tmpx,tmpy,3)。 initgraph(amp。graphmode,E:\\tc3\\bgi)。 DPOINT* p。 p[0].x=。 p[1].x=。 p[2].x=。 p[3].x=。 p[4].x=。 p[5].x=。 p[6].x=。 p[7].x=。 p[8].x=。 p[9].x=。 Bezier bzr(p,10)。 delete p。closegraph()。該程序根據(jù)以下數(shù)據(jù)點[x, y]:P0[50, 130] P1[120, 40] P2[100, 270]和P3[140, 160]計算出結(jié)果,并實現(xiàn)兩段首尾相接的兩次B樣條曲線在屏幕上顯示的功能,采用了C++語言實現(xiàn);將已知點代入式(419)可得兩段兩次B樣條曲線方程:P1(t)= [ t2 t 1] =[45 160]t2 +[70 90]t +[85 85]P2(t)= [ t2 t 1] = [30 170]t2 +[20 230]t +[110 155]include include include typedef struct{ double x,y。 //定義結(jié)構(gòu)體class B_Spline //定義B樣條曲線類{ private: DPOINT* bP。 //有多少個型值點 void drawFrame()。 void drawCurve(int p0,int p1,int p2)。 //定義構(gòu)造函數(shù) void draw()。B_Spline::B_Spline(DPOINT* p,int len) //構(gòu)造函數(shù)的實現(xiàn){ this bP=p。}void B_Spline::draw() //通過公有函數(shù)調(diào)用私有函數(shù){ drawFrame()。}void B_Spline::drawFrame() //其功能是繪制出多邊形和各個端點{ setcolor(12)。im_maxIndex1。 //繪制多邊形 circle(bP[i].x, bP[i].y,5)。}void B_Spline::drawCurve() //實現(xiàn)多段B樣條曲線繪制的功能{ for(int i=0。i++) { drawCurve(i,i+1,i+2)。 double tmpy=。 for(。t+=) { tmpx=(*bP[p0].xbP[p1].x+*bP[p2].x)*t*t+(bP[p0].x+bP[p1].x)*t+*bP[p0].x+*bP[p1].x。 putpixel(tmpx,tmpy,3)。 initgraph(amp。graphmode,)。 DPOINT* p。 p[0].x=。 p[1].x=。 p[2].x=。 p[3].x=。 B_Spline b_sp(p,4)。 delete p。closegraph()。12. 將下列數(shù)據(jù) X 2 6 10 12 14 16 Y 3 8 11 13 15 17按最小二乘法曲線擬合,分別求一次和二次多項式曲線,擬合以上數(shù)據(jù)并畫圖表示。解:假設(shè)以上五個頂點依次對應(yīng)編號ABCDE,首先計算得到ET表:AEDCB…1046/5EA10151BA 610 5 4584/3DE584/3DC 3 2 1 0 用于存放AET活動邊表該多邊形的AET指針的內(nèi)容為:1 AET為空584/3DE584/3DCAET2DCDEAET54/328/34/320/353DE4/316/354/332/35DCAET46/54104/345DCEAAET5DE4/312511510BA1410BAEA6/526/510AET16BAEA6/532/510AET113107EA6/538/510AET11210BA810AET11110BAEA44/56/591010BAEA6/51010AET110具體編程實現(xiàn)如下:第1步:(1) 根據(jù)輸入的五個頂點坐標找到y(tǒng)值最小的點(例如點D,此時y=2),并找到與D有邊關(guān)系的兩個頂點(此時為E和C),在y=2處建立ET邊表記錄(ymax、xi和m值均可通過頂點坐標間的計算得到,例如DE邊的建立,特別注意:當D點和E點y坐標值相同時,也即是DE與x軸平行,該邊不能計入ET邊表),之后標記D點被訪問過;(2) 排除訪問過的點以及和該點相關(guān)聯(lián)的邊,重復(fù)(1)直至將ET表建立完善。template class Tstruct Enode{ Enode() {next=NULL。 xi=pxi。 next=pnext。 //ymax表示最大的y值,xi表示最底端點的x坐標值 float m。}。 ~ET()。 int n。}。 a=new EnodeT *[n]。in。} //ET邊表的初始化template class TETT::~ET(){ EnodeT *p, *q。 for(int i=1。i++) { p=a[i]。 while(p) { p=pnext。 q=p。} //析構(gòu)函數(shù)負責回收內(nèi)存空間template class TResultCode ETT::Insert(int u, T ymax, float xi, float m){ if(u0||un1) return Failure。 a[u]=p。} //依次插入結(jié)點構(gòu)建出邊表,其中a[1]到a[10]用于構(gòu)建ET邊表 //a[0]用于構(gòu)建活動AET邊表(2) 填充函數(shù)po_fill的實現(xiàn)和主函數(shù)的實現(xiàn)include include include void po_fill(ETint amp。 //i作為控制變量標識掃描線 while(iep1) { if([i]!=NULL) { Enodeint *p,*r。 r=[0]。 if(![0]) {[0]=q。} else { if(rxi==qxi) {qnext=rnext。 r=q。 qnext=r。amp。 if(rnext) {qnext=rnext。 } else {rnext=q。} } } p=pnext。 if([0]) { f=[0]。 f=fnext。j=gnextxi。 } //把一對相鄰結(jié)點的xi區(qū)間范圍進行填充 } if([0]!=NULL) { Enodeint *w。 while(s) { Enodeint *z=NULL。 s=0。amp。 w=wnext。 if(z) znext=wnext。 delete w。 } //刪去AET表中i值已經(jīng)等于ymax的結(jié)點記錄 if([0]) { Enodeint *u,*v。 while(u) { v=u。 vxi=vxi+vm。 //進入下一條掃描線 }} void main() //主函數(shù)的實現(xiàn){ int gdriver, gmode。 gmode=VGAHI。gdriver, amp。 //圖形系統(tǒng)初始化 int e=11。 //color用于標識填充顏色 ETint et(e)。 (2,5,8,4/3)。 (5,10,4,6/5)。 //調(diào)用填充函數(shù) getch()。}[注]第2步的實現(xiàn)存在兩個問題:(1) 沒有實現(xiàn)世界坐標系統(tǒng)(第1象限)到設(shè)備坐標系統(tǒng)的轉(zhuǎn)換,所以顯示出來的圖形是以上所畫圖形的倒置,解決方法就是從世界坐標系統(tǒng)的最高y值開始掃描;(2) 由于m的取值為分數(shù)(浮點型),這就導(dǎo)致像素點坐標值出現(xiàn)浮點型,這樣經(jīng)過取整運算,計算出來的像素點坐標值將可能與多邊形填充點真實值之間存在偏差,導(dǎo)致所繪制的圖形不完全與實際吻合。解:如圖所示:P3P1P2P6P5P4則該多邊形的ET表為: 6623P2P3 5 46121P4P3420P1P2 3 2284P5P4282P5P6 1該多邊形的AET指針的內(nèi)容為:(每條掃描線均有3行指針鏈,第1行表示將ET表加入AET中,第2行表示從AET表中刪去yi=ymax,第3行表示xi=xi+1/m后,學生只要寫出第2行即可)282P5P6284P5P4AET1284P5P4282
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1