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

正文內(nèi)容

計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告(已修改)

2024-11-04 12:35 本頁(yè)面
 

【正文】 第一篇:計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告實(shí) 驗(yàn) 報(bào) 告一、實(shí)驗(yàn)?zāi)康恼莆沼行蜻叡硭惴ㄌ畛涠噙呅螀^(qū)域;理解多邊形填充算法的意義;增強(qiáng)C語(yǔ)言編程能力。二、算法原理介紹根據(jù)多邊形內(nèi)部點(diǎn)的連續(xù)性知:一條掃描線與多邊形的交點(diǎn)中,入點(diǎn)和出點(diǎn)之間所有點(diǎn)都是多邊形的內(nèi)部點(diǎn)。所以,對(duì)所有的掃描線填充入點(diǎn)到出點(diǎn)之間所有的點(diǎn)就可填充多邊形。判斷掃描線上的點(diǎn)是否在多邊形之內(nèi),對(duì)于一條掃描線,多邊形的掃描轉(zhuǎn)換過(guò)程可以分為四個(gè)步驟:(1)求交:計(jì)算掃描線與多邊形各邊的交點(diǎn);(2)排序:把所有交點(diǎn)按x值遞增順序排序;(3)配對(duì):第一個(gè)與第二個(gè),第三個(gè)與第四個(gè)等等;每對(duì)交點(diǎn)代表掃描線與多邊 形的一個(gè)相交區(qū)間。(4)著色:把相交區(qū)間內(nèi)的象素置成多邊形顏色,把相交區(qū)間外的象素置成背景色。p1,p3,p4,p5屬于局部極值點(diǎn),要把他們兩次存入交點(diǎn)表中。如掃描線y=7上的交點(diǎn)中,有交點(diǎn)(2,7,13),按常規(guī)方法填充不正確,而要把頂點(diǎn)(7,7)兩次存入交點(diǎn)表中(2,7,7,13)。p2,p6為非極值點(diǎn),則不用如上處理。為了提高效率,在處理一條掃描線時(shí),僅對(duì)與它相交的多邊形的邊進(jìn)行求交運(yùn)算。把與當(dāng)前掃描線相交的邊稱為活性邊,并把它們按與掃描線交點(diǎn)x坐標(biāo)遞增的順序存放在一個(gè)鏈表中,稱此鏈表為活性邊表(AET)。對(duì)每一條掃描線都建立一個(gè)與它相交的多邊形的活性邊表(AET)。每個(gè)AET的一個(gè)節(jié)點(diǎn)代表一條活性邊,它包含三項(xiàng)內(nèi)容;; 。每條掃描線的活性邊表中的活性邊節(jié)點(diǎn)按照各活性邊與掃描線交點(diǎn)的x值遞增排序連接在一起。當(dāng)掃描線y移動(dòng)到下一條掃描線y = y+1時(shí),活性邊表需要更新,即刪去不與新掃描線相交的多邊形邊,同時(shí)增加與新掃描線相交的多邊形邊,并根據(jù)增量法重新計(jì)算掃描線與各邊的交點(diǎn)x。當(dāng)多邊形新邊表ET構(gòu)成后,按下列步驟進(jìn)行:① 對(duì)每一條掃描線i,初始化ET表的表頭指針ET[i]; ② 將ymax = i的邊放入ET[i]中;③ 使y =多邊形最低的掃描線號(hào); ④ 初始化活性邊表AET為空; ⑤ 循環(huán),直到AET和ET為空。l 將新邊表ET中對(duì)應(yīng)y值的新邊節(jié)點(diǎn)插入到AET表。l 遍歷AET表,將兩兩配對(duì)的交點(diǎn)之間填充給定顏色值。l 遍歷AET表,將 ymax= y的邊節(jié)點(diǎn)從AET表中刪除,并將ymax y的各邊節(jié)點(diǎn)的x值遞增Δx;并重新排序。l y增加1。三、程序源代碼include “” define WINDOW_HEIGHT 480 define NULL 0 include “” include “” include “” include “” typedef struct tEdge /*typedef是將結(jié)構(gòu)定義成數(shù)據(jù)類型*/ { int ymax。/* 邊所交的最高掃描線號(hào) */ float x。/*當(dāng)前掃描線與邊的交點(diǎn)的x值 */ float dx。/*從當(dāng)前掃描線到下一條掃描線之間的x增量*/ struct tEdge *next。}Edge。typedef struct point{int x,y。}POINT。/*將結(jié)點(diǎn)插入邊表的主體函數(shù)*/void InsertEdge(Edge *list,Edge *edge)/*活性邊edge插入活性邊表list中*/ { Edge *p,*q=list。p=qnext。/*記住q原來(lái)所指之結(jié)點(diǎn)*/ while(p!=NULL)/*按x值非遞減順序增加邊表*/ {if(edgexx)/*要插入的邊的x較大不應(yīng)該在當(dāng)前插入*/p=NULL。else /*要插入的邊的x較小應(yīng)該在當(dāng)前插入*/{q=p。p=pnext。} } edgenext=qnext。/*使欲插入之結(jié)點(diǎn)edge指向q原來(lái)所指之結(jié)點(diǎn)*/ qnext=edge。/*使q指向插入之結(jié)點(diǎn)*/ }int yNext(int k,int t,POINT *pts)/*對(duì)于多邊形中的某個(gè)頂點(diǎn)序號(hào)k(0,1...6),返回下一頂點(diǎn)的縱坐標(biāo),如果這2個(gè)頂點(diǎn)所在邊是 水平的,則順延,即返回第(k+2)個(gè)頂點(diǎn)的縱坐標(biāo)),t是頂點(diǎn)個(gè)數(shù)+1,pts指向多邊形頂點(diǎn)結(jié)構(gòu)體的指針*/{ int j。if((k+1)(t1))/*當(dāng)前頂點(diǎn)為最后一個(gè)頂點(diǎn),則下一個(gè)頂點(diǎn)為第0個(gè)頂點(diǎn) */j=0。elsej=k+1。/*當(dāng)前頂點(diǎn)不是最后一個(gè)頂點(diǎn),下一個(gè)頂點(diǎn)為數(shù)組下標(biāo)加一*/ while(pts[k].y==pts[j].y)/*掃描線掃過(guò)平行頂點(diǎn),需分情況找到當(dāng)前頂點(diǎn)下下個(gè)頂點(diǎn)*/ if((j+1)(t1))j=0。elsej++。return(pts[j].y)。/*返回下一個(gè)頂點(diǎn)的y值 */ }/* 計(jì)算增量,修改AET*/ /*生成邊表結(jié)點(diǎn),并插入到邊表中的主體函數(shù)*/ void MakeEdgeRec(POINT lower,POINT upper,int yComp,Edge *edge,Edge *edges[])/*把邊結(jié)點(diǎn)edge,[]中 */ {edgedx=(float)()/()。edgex=。if(=。/*縮短上層頂點(diǎn)*/ /*奇點(diǎn),應(yīng)該把這點(diǎn)當(dāng)作兩個(gè)點(diǎn)而分開(kāi),所以把y的最大值減一,向下移動(dòng)*/ else edgeymax=。/*不是奇點(diǎn),不需改變y值 */ insertEdge(edges[],edge)。/*插入一個(gè)邊緣掃描線,插入到列表 */ }/*創(chuàng)建邊表的主體函數(shù)*/ void BuildEd
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1