久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

2012級碩士研究生計算機圖形學試題

時間:2019-05-15 13:02:07下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《2012級碩士研究生計算機圖形學試題》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《2012級碩士研究生計算機圖形學試題》。

第一篇:2012級碩士研究生計算機圖形學試題

2012級碩士研究生計算機圖形學試題

問答題

1、簡述中點劃線法。10分

2、繪圖說明多邊形掃描填充算法過程。10分

3、Hermite曲線公式及說明。10分

4、編碼裁剪過程。10分

5、求空間中一點相對于任一平面對稱點的過程。10分

6、簡述Phone光照模型。10分

論述題

1、簡單圖元生成算法中的核心問題,并舉例說明如何實現。15分

2、簡要說明一下圖形學討論的各章內容在圖形學這個體系中的作用。15分

第二篇:計算機圖形學學習心得

《計算機圖形學》學習報告

? 東西方建筑中的理性

盡管東方“木構”的暫時性文化和西方“石砌”的永久性文化氛圍造成了建筑形式風格的差異,但是它們都兼有理性和感性美。從柱式的英文“order”一詞,到中國古建筑等級制的基數開間,無不透露著匠人的理性思考;從古埃及繪畫中為了將人的特征最大限度表現而作的頭部側面身體正面的繪畫,到文藝復興達芬奇創造的透視畫法,一步步將人們引向更為理性的世界。

西方古典主義者強調構圖中的主從關系,突出軸線、講求配稱;倡導理性,主張建筑的真實,反對表現感情和情緒。隨之而來的比例、節奏、韻律、秩序美,是建筑區別于雕塑和繪畫兩大藝術的特點。

維特魯威提出的建筑三原則:堅固、適用、美觀,時時刻刻提醒著我們建筑是要被建造起來的,它是我們的“避難所”,需要理性的結構、縝密的分析和思考。時代在進步,建筑理論從勒杜克的結構理性主義發展到現在的解構主義,再也不是建筑形式適應結構的時代了,而是兩者互為促進。

我們對建筑的理解不再是像路易斯康那樣再去問磚想做什么,等待它做拱卷的回答。我們向大自然學習,卡拉特拉瓦創造了許多帶有理性美的仿生建筑。當我們想進一步拓寬我們的思維時,我們還能向誰求助?計算機圖形學為我們打開了理性思考的一扇窗。

? 計算機圖形學對理性建筑的貢獻

半個多世紀以來,計算機技術得到了飛速的發展。它的進步不僅僅使世界變得更平,信息交流更便捷,在此平臺上開發的各種繪圖軟件更是將建筑師從傳統的手工渲染畫圖中解放出來,也解放了結構師的工作量。用了30年的時間,計算機的速度從K(103)到T(1012),而從T到Z(1021),我們只用了10年時間。發展的速度是越來越快,我們設計方法和速度都得到了革新。這是這樣一個數字化信息化的時代,才有弗蘭克蓋里建筑的夸張和扎哈哈迪德設計的新奇。

原來我們隨手繪出的自由曲線,現在計算機都能幫我們算出是否有建造的可能,以及建筑性能也能在建造前得到分析。在創意上,計算機也能將我們模糊的概念無限發展,給它一個規則,它可能還你一個超乎想象的造型,在理性規則中生成感性而自由的建筑。

知其然,還應知其所以然,看著電視機的變薄,圖像更加逼真,這變化的一切都建立在計算機圖形學的架構下,了解了基礎原理,才能更高效地做高質量的建筑設計。

? 計算機圖形學的理論知識

1.相關概念

計算機圖形學是主要研究通過計算機處理用集合數據和數學模型所描述的圖形的原理、算法和系統。包括圖形的輸入、存儲、運算、轉換、傳送和輸出。數字化技術是泛指在某特定領域利用包括硬件、軟件在內的計算機與電子技術以及數學或數字模型等描述的問題進行求解、模擬或分析活動的一切應用技術。

建筑數字化技術研究應用包括建筑的數字化設計和反映建筑的數字化特征在內的數字技術。而建筑數字化技術的核心幾何學科就是計算機圖形學。2.反映建筑數字化特征的典型圖形技術

建筑的動態特征——圖形顯示:如奧地利格拉茨美術館的925盞燈形成的外墻面顯示屏 建筑的互動特征——圖形顯示:如杜瑟赫姆市的隨情感變化而色彩變化的建筑物

建筑的數字特征——幾何運算:如柏林Max Reinhardt大樓模型及“莫比烏斯環”變換 建筑的虛實特征——交互式圖形:如法國國立圖書館(實體與網絡圖書館)

設計手段和設計媒體的數字化特征——交互式圖形:如紐約韓國基督教長老會教堂 而建筑性能如聲環境、熱環境、光環境、風環境模擬的可視化分析中都用到了圖形學。3.虛擬現實技術(VR)

虛擬現實技術是計算機生成的給人多種感官刺激的虛擬世界(環境),是一種高級的人機交互系統。

虛擬現實技術的三個基本特征:沉浸感、交互性、想象力 它具有多學科的綜合性,正如建筑學是一門綜合的藝術,虛擬現實技術包括圖像處理、圖形學、計算幾何、多傳感器、網絡、多媒體和仿真技術等。

正如課堂上老師放映的《碟中諜4》,逼真的爆炸場景,以及從皮克斯動畫開始的動物毛發到最近火熱的《少年派》逼真的老虎與人共存畫面,虛擬現實技術的進步影響到了我們生活的方方面面,觸到了我們原來想都不敢想的世界。

而VR技術在建筑行業中,有以下作用:(1)指導設計:讓建筑師通過瀏覽觀察和了解空間關系,特別是對空間大小、方向、形狀和建筑元素行為的理解。(2)建筑表現與環境仿真(3)仿真施工:檢查和修改施工細節、合理性和有效性

4.虛擬現實的基礎與關鍵技術:建模與描繪

基于幾何和圖形學的建模和描繪技術

直接幾何建模

3D掃描建模

投影視圖建模

基于圖像的場景描繪技術(IBR)

圖像投影變形技術 光場重建技術

混合式IBR技術

IBR技術圖形的繪制獨立于場景的復雜性,僅僅與所要生成畫面的分辨率有關。

第三篇:計算機圖形學實驗

實驗三 MFC畫直線

最近自己在學習如何在VC 6.0 開發環境下的使用MFC AppWizard(exe)來繪畫一條直線,雖然比較簡單,通過這樣的練習可以幫助你熟悉MFC的開發環境以及其中的消息傳遞機制,希望對于像我一樣初入MFC圖形繪制學習的人有幫

第一步:構建MFC窗體

打開Visual C++ 6.0編譯器 新建→工程→MFC AppWizard(exe),工程名以DrawLine為例,然后確定。為了方便,在MFC應用程序向導—步驟1當中選擇“單文檔”,其余所有的步驟都為默認值,直接“完成”。這樣一個簡單的MFC窗體就構建好了,自己不妨Compile—Build—BuildExecute一下。

第二步:編輯菜單項

選擇ResourceView視窗展開Menu文件夾,左鍵雙擊IDR_DRAWLITYPE,右邊就會出現菜單圖形編輯界面,為了簡化,我們只在添加幫助→DrawLine功能選擇項。雙擊空白會彈出“菜單項目 屬性”對話框。ID:ID_DRAW_LINE;標明:

DrawLine(&D),其它的為缺省。

第三步:建立消息命令

如果此時運行該程序,你會發現幫助—DrawLine的功能選項是灰色的,原因就在于我們還沒有添加該功能的消息命令相應函數。通過“查看—Message Maps—Project:DrawLine—Class name:CDrawLineView—Object IDs:ID_DRAW_LINE—選定COMMAND—Add Function?”,其它為默認,最后確定完成。現在如果再重新運行該程序的話,會發現原來的灰色已經消除了。

第四步:添加鼠標消息響應

打開ClassView視窗,右鍵選定CDrawLineView,選擇Add Windows Messsage Handler會彈出對話框,完成CDrawLineView類的WM_LBUTTONDOWN、WM_MOUSEMOVE、WM_LBUTTONUP三個Windows消息事件的新建。

第五步:添加響應代碼

首先,在ClassView視窗中雙擊CDrawLineView會定位到“DrawLineView.h : interface of the CDrawLineView class”的文件,添加CDrawLineView類的成員:protected: int m_Drag;POINT m_pPrev;POINT m_pOrigin;三個成員變量。視窗中展開CDrawLineView類,雙擊定位OnLBUTTONDOWN()函數。在該函數消息響應

處添加如下代碼:

//建立好繪圖的設備環境

CClientDC dc(this);OnPrepareDC(&dc);

dc.DPtoLP(&point);

//獲取起始點坐標 m_pPrev=point;m_pOrigin=point;

m_Drag=1;

然后,定位于OnMouseMove(),添加如下代碼(其中關鍵用到了橡皮筋技術):

//建立好繪圖的設備環境

CClientDC dc(this);

OnPrepareDC(&dc);dc.DPtoLP(&point);

dc.SetROP2(R2_NOT);//橡皮筋繪圖技術

//判斷是否BUTTONDOWN

if(m_Drag)

{

dc.MoveTo(m_pOrigin);dc.LineTo(m_pPrev);dc.MoveTo(m_pOrigin);dc.LineTo(point);

}

m_pPrev=point;

最后,在OnLBUTTONDOWN()添加代碼: m_Drag=0;

程序運行效果圖

實驗4 實現圓的生成算法

一、實驗目的

1.熟悉CDC圖形程序庫; 2.掌握中點畫圓生成算法; 3.掌握Bresenham畫圓算法。

二、實驗內容

利用VisualC++6.0設計一個簡易畫圓繪圖板,驗證圓生成算法。

三、實驗指導

1.生成繪圖應用程序的框架,如下圖所示。具體實現見第二次實驗,過程不再詳細說明。

2.在應用程序中增加菜單

完成相關菜單的設計,具體的效果如下圖所示,并設置好相關菜單消息的映射,具體的實現在前面的實驗中介紹過,再此不在詳細說明。

3.在繪圖函數中添加代碼

通過以上步驟,得到了與菜單對應的消息映射,就可以在函數中添加代碼繪制圖形了。(1)利用中點畫圓算法實現圓的生成(算法原理見教材)。void CDraw_CirView::OnMid(){ // TODO: Add your command handler code here CDC*pDC=GetDC();//得到繪圖類指針

RedrawWindow();//重繪窗口

int x,y,x0=200,y0=200,r=100;//圓的圓心為(x0,y0),半徑為r float d;x=0;y=r;d=1.25-r;

pDC->SetPixel(x+x0,y+y0,RGB(255,0,0));pDC->SetPixel(y+x0,x+y0,RGB(255,0,0));pDC->SetPixel(y+x0,-x+y0,RGB(255,0,0));pDC->SetPixel(x+x0,-y+y0,RGB(255,0,0));pDC->SetPixel(-x+x0,-y+y0,RGB(255,0,0));pDC->SetPixel(-y+x0,-x+y0,RGB(255,0,0));pDC->SetPixel(-y+x0,x+y0,RGB(255,0,0));pDC->SetPixel(-x+x0,y+y0,RGB(255,0,0));while(x<=y){

if(d<0)

{

d=d+2*x+3;

x++;

}

else

{

d=d+2*(x-y)+5;

x++;

y--;}

pDC->SetPixel(x+x0,y+y0,RGB(255,0,0));

pDC->SetPixel(y+x0,x+y0,RGB(255,0,0));

pDC->SetPixel(y+x0,-x+y0,RGB(255,0,0));

pDC->SetPixel(x+x0,-y+y0,RGB(255,0,0));

pDC->SetPixel(-x+x0,-y+y0,RGB(255,0,0));

pDC->SetPixel(-y+x0,-x+y0,RGB(255,0,0));

pDC->SetPixel(-y+x0,x+y0,RGB(255,0,0));

pDC->SetPixel(-x+x0,y+y0,RGB(255,0,0));} } 由以上代碼繪出的圖形如下:

(2)利用Bresenham算法生成圓(算法原理見教材)。void CDraw_CirView::OnBre(){ // TODO: Add your command handler code here CDC*pDC=GetDC();//得到繪圖類指針

//RedrawWindow();//重繪窗口

int x,y,x0=200,y0=200,r=50;//圓的圓心為(x0,y0),半徑為r int delta,delta1,delta2,direction;x=0;y=r;delta=2*(1-r);while(y>=0){

pDC->SetPixel(x+x0,y+y0,RGB(0,0,255));

pDC->SetPixel(x+x0,-y+y0,RGB(0,0,255));

pDC->SetPixel(-x+x0,y+y0,RGB(0,0,255));

pDC->SetPixel(-x+x0,-y+y0,RGB(0,0,255));

if(delta<0)

{

delta1=2*(delta+y)-1;

if(delta<=0)direction=1;

else direction=2;

}

else if(delta>0)

{

delta2=2*(delta-x)-1;

if(delta2<=0)direction=2;

else direction=3;

}

else direction=2;

switch(direction)

{

case 1:x++;

delta+=2*x+1;

break;

case 2:x++;y--;

delta+=2*(x-y+1);

break;

case 3:y--;

delta+=(-2*y+1);

break;

} } }

由以上代碼繪出的圖形如下:

(3)以上是本次實驗的基本部分,利用中點畫圓和Bresenham畫圓算法實現的基本圖形的繪制。能不能利用該算法,完成一些復雜圖形的生成,比如利用基本的畫圓算法繪制一個奧運五環。甚至根據畫圓算法,實現二次曲線的生成,如橢圓的生成等等。請同學們認真考慮,完成這部分的內容,上機調試。

四、思考

1.如何實現圓心為任意位置的圓的繪制; 2.兩種畫圓算法的比較。

第四篇:計算機圖形學學習體會

計算題圖形學課程學習體會

計算機圖形學是研究用計算機生成、處理和顯示圖形的一門學科。他的重要性體現在人們越來越強烈的需要和諧的人機交互環境,UI已經成為軟件的重要組成部分,以圖形的方式表示抽象的概念和數據已經成為信息領域的發張趨勢。這門課我們通過自學和同學間互相上課,了解和掌握了計算機圖形學的概念、方法和基本的算法。

學習的過程中,感觸比較深的是,常常被那些算法所困擾,算法很難理解,解釋的枯燥而且難學。原因首先是計算機圖形學這門學科本身特點就是綜合性很強,涉及的內容和應用廣泛,學科交叉復雜。綜合了計算機科學、數學、物理學等其他相關學科的知識。而且學科發展日新月異,新的應用領域不斷拓展,相關學科相互滲透。其次是與計算機圖形學課程中的算法特點有關。很多的算法是為了追求高效率,精益求精,構思獨特、實現精巧,算法本身就很難看懂和理解。第三方面就是這門課程是一門理論性和實踐性兼顧的綜合性課程,實踐性很強,不實踐就顯得空洞,枯燥乏味。

這門課學習的目的是讓我們掌握計算機圖形學的相關概念、原理和知識,算法的難學難理解,是我們學習的主要障礙。課程實踐中,教員讓我們自學,互相授課,增強時間體會。在自學和自作可見互相授課過程中,要求要注重基礎,強調基本

這些動畫,對增強原理、算法的理解性具有很大的作用。

以上是本人在計算機圖形課學習過程中的體會,字數不多,確是心得,不足之處還請曹老師指正。

第五篇:計算機圖形學實驗報告

實 驗 報 告

一、實驗目的

1、掌握有序邊表算法填充多邊形區域;

2、理解多邊形填充算法的意義;

3、增強C語言編程能力。

二、算法原理介紹

根據多邊形內部點的連續性知:一條掃描線與多邊形的交點中,入點和出點之間所有點都是多邊形的內部點。所以,對所有的掃描線填充入點到出點之間所有的點就可填充多邊形。

判斷掃描線上的點是否在多邊形之內,對于一條掃描線,多邊形的掃描轉換過程可以分為四個步驟:

(1)求交:計算掃描線與多邊形各邊的交點;(2)排序:把所有交點按x值遞增順序排序;

(3)配對:第一個與第二個,第三個與第四個等等;每對交點代表掃描線與多邊 形的一個相交區間;(4)著色:把相交區間內的象素置成多邊形顏色,把相交區間外的象素置成背景色。

p1,p3,p4,p5屬于局部極值點,要把他們兩次存入交點表中。如掃描線y=7上的交點中,有交點(2,7,13),按常規方法填充不正確,而要把頂點(7,7)兩次存入交點表中(2,7,7,13)。p2,p6為非極值點,則不用如上處理。

為了提高效率,在處理一條掃描線時,僅對與它相交的多邊形的邊進行求交運算。把與當前掃描線相交的邊稱為活性邊,并把它們按與掃描線交點x坐標遞增的順序存放在一個鏈表中,稱此鏈表為活性邊表(AET)。

對每一條掃描線都建立一個與它相交的多邊形的活性邊表(AET)。每個AET的一個節點代表一條活性邊,它包含三項內容

1.x-當前掃描線與這條邊交點的x坐標;

2.Δx-該邊與當前掃描線交點到下一條掃描線交點的x增量; 3.ymax-該邊最高頂點相交的掃描線號。

每條掃描線的活性邊表中的活性邊節點按照各活性邊與掃描線交點的x值遞增排序連接在一起。

當掃描線y移動到下一條掃描線y = y+1時,活性邊表需要更新,即刪去不與新掃

描線相交的多邊形邊,同時增加與新掃描線相交的多邊形邊,并根據增量法重新計算掃描線與各邊的交點x。

當多邊形新邊表ET構成后,按下列步驟進行:

① 對每一條掃描線i,初始化ET表的表頭指針ET[i]; ② 將ymax = i的邊放入ET[i]中;

③ 使y =多邊形最低的掃描線號; ④ 初始化活性邊表AET為空; ⑤ 循環,直到AET和ET為空。

? 將新邊表ET中對應y值的新邊節點插入到AET表。? 遍歷AET表,將兩兩配對的交點之間填充給定顏色值。

? 遍歷AET表,將 ymax= y的邊節點從AET表中刪除,并將ymax> y的各邊節點的x值遞增Δx;并重新排序。? y增加1。

三、程序源代碼

#include “graphics.h” #define WINDOW_HEIGHT 480 #define NULL 0 #include “alloc.h” #include “stdio.h” #include “dos.h” #include “conio.h” typedef struct tEdge /*typedef是將結構定義成數據類型*/ { int ymax;/* 邊所交的最高掃描線號 */ float x;/*當前掃描線與邊的交點的x值 */ float dx;/*從當前掃描線到下一條掃描線之間的x增量*/ struct tEdge *next;}Edge;

typedef struct point{int x,y;}POINT;/*將結點插入邊表的主體函數*/

void InsertEdge(Edge *list,Edge *edge)/*活性邊edge插入活性邊表list中*/ { Edge *p,*q=list;p=q->next;/*記住q原來所指之結點*/ while(p!=NULL)/*按x值非遞減順序增加邊表*/ {

if(edge->x

x)/*要插入的邊的x較大不應該在當前插入*/

p=NULL;

else /*要插入的邊的x較小應該在當前插入*/

{q=p;

p=p->next;

} } edge->next=q->next;/*使欲插入之結點edge指向q原來所指之結點*/ q->next=edge;/*使q指向插入之結點*/ }

int yNext(int k,int cnt,POINT *pts)/*對于多邊形中的某個頂點序號k(0,1...6),返回下一頂點的縱坐標,如果這2個頂點所在邊是 水平的,則順延,即返回第(k+2)個頂點的縱坐標),cnt是頂點個數+1,pts指向多邊形頂點結構體的指針*/

{ int j;if((k+1)>(cnt-1))/*當前頂點為最后一個頂點,則下一個頂點為第0個頂點 */

j=0;else

j=k+1;/*當前頂點不是最后一個頂點,下一個頂點為數組下標加一*/ while(pts[k].y==pts[j].y)/*掃描線掃過平行頂點,需分情況找到當前頂點下下個頂點*/ if((j+1)>(cnt-1))

j=0;

else

j++;return(pts[j].y);/*返回下一個頂點的y值 */ }

/* 計算增量,修改AET*/ /*生成邊表結點,并插入到邊表中的主體函數*/ void MakeEdgeRec(POINT lower,POINT upper,int yComp,Edge *edge,Edge *edges[])/*把邊結點edge,放到lower.y掃描線所在的邊結點指針數組edges[]中 */ {edge->dx=(float)(upper.x-lower.x)/(upper.y-lower.y);edge->x=lower.x;if(upper.yymax=upper.y-1;/*縮短上層頂點*/ /*奇點,應該把這點當作兩個點而分開,所以把y的最大值減一,向下移動*/ else edge->ymax=upper.y;/*不是奇點,不需改變y值 */ insertEdge(edges[lower.y],edge);/*插入一個邊緣掃描線,插入到列表 */ }

/*創建邊表的主體函數*/ void BuildEdgeList(int cnt,POINT *pts,Edge *edges[])/*建立新邊表,cnt:多邊形頂點個數+1,edges[]:指向活性邊結點的指針數組*/ { Edge *edge;POINT v1,v2;int i,yPrev=pts[cnt-2].y;/*當前頂點的前一個頂點的y值,在當前頂點不是奇點時使用該參數*/ v1.x=pts[cnt-1].x;v1.y=pts[cnt-1].y;for(i=0;i

edge=(Edge *)malloc(sizeof(Edge));

edge=(Edge*)malloc(sizeof(Edge));if(v1.y

yNext*/ MakeEdgeRec(v1,v2,yNext(i,cnt,pts),edge,edges);/*確定v1,v2邊較高端點的開閉*/

else

MakeEdgeRec(v2,v1,yPrev,edge,edges);/*當前頂點

是奇點*/ } yPrev=v1.y;v1=v2;} }

/*建立活性邊表的主體函數:建立第scan條掃描線的活性邊表*/ void BuildActiveList(int scan,Edge *active,Edge *edges[])/*建立掃描線scan的活性邊表,把活性邊結點放入掃描線scan的結點指針數組 edges[scan]中*/ { Edge *p,*q;p=edges[scan]->next;/*查找當前掃描線對應的y桶*/ while(p)/*y桶不空*/

{q=p->next;/*找到最后一個邊結點,插入*/

InsertEdge(active,p);/*把更新后的邊表重新插入邊表中保存*/

p=q;

} }

/*填充一對交點的主體函數*/ void FillScan(int scan,Edge *active,int color)/*填充掃描線:填充掃描線上,且在下一結點到再下一結點之間的點*/ { Edge *p1,*p2;int i;p1=active->next;while(p1){

p2=p1->next;

for(i=p1->x;i

x;i++)

putpixel((int)i,scan,color);/*畫出圖形內部的點*/ p1=p2->next;/*活性表的下一條邊表 */ } }

void DeleteAfter(Edge *q)/*刪除鏈表中結點,刪除邊結點q的后續結點p*/ { Edge *p=q->next;q->next=p->next;/*刪除結點*/ free(p);} /* 刪除 y=ymax 的邊 */

/*填充完后,更新活動邊表的主體函數*/ void UpdateActiveList(int scan,Edge *active)/*刪除掃描線scan完成交點計算的活性邊,同時更新交點x域*/ { Edge *q=active,*p=active->next;while(p)if(scan>=p->ymax)/*掃描線超過邊的最大y值,此條邊的節點應該刪掉*/ { p=p->next;deleteAfter(q);} else /*掃描線未超過邊的最大y值,相應的x值增加*/ { p->x=p->x+p->dx;q=p;p=p->next;} }

/*對活性邊表結點重新排序的主體函數*/ void ResortActiveList(Edge *active)/*活性邊表active中的結點按x域從小到大重新排序*/ { Edge *q,*p=active->next;active->next=NULL;while(p){q=p->next;InsertEdge(active,p);/*把更新后的邊表重新插入邊表中保存 */ p=q;} }

/*多邊形填充的主體程序*/ void ScanFill(int cnt,POINT *pts,int color)/*填充函數,輸入:多邊形頂點個數+1=cnt, 指向多邊形頂點的指針數組pts*/

{ Edge *edges[WINDOW_HEIGHT],*active;int i,scan,scanmax=0,scanmin=WINDOW_HEIGHT;for(i=0;i

{if(scanmax

if(scanmin>pts[i].y)scanmin=pts[i].y;

} for(scan=scanmin;scan<=scanmax;scan++)/*初始化每條掃面線的邊鏈表*/ {edges[scan]=(Edge *)malloc(sizeof(Edge));/*建

edges[scan]->next=NULL;

} BuildEdgeList(cnt,pts,edges);/*建立有序邊表*/ active=(Edge *)malloc(sizeof(Edge));“桶”*/ active->next=NULL;for(scan=scanmin;scan<=scanmax;scan++)/*掃描每條掃描線,求活性表*/ {

BuildActiveList(scan,active,edges);/*建立活性邊表*/

if(active->next)/*活性邊表不為空*/

{ FillScan(scan,active,color);/*填充當前掃描線*/ UpdateActiveList(scan,active);/*更新活化邊表*/ ResortActiveList(active);/*重排活化邊表*/

} } }

/*開始菜單*/ void main(){ POINT pts[7];/*保存數組*/ int gdrive=DETECT,gmode;pts[0].x=100;pts[0].y=40;/*多邊形頂點x、y坐標*/ pts[1].x=220;pts[1].y=140;pts[2].x=280;pts[2].y=80;pts[3].x=350;pts[3].y=300;pts[4].x=200;pts[4].y=380;pts[5].x=50;pts[5].y=280;pts[6].x=100;pts[6].y=40;/*合并桶中的新邊,按次序插入到 AET 中*/ initgraph(&gdrive,&gmode,“C:TC3.0BGI”);/*設置graphic模式*/ ScanFill(7,pts,2);getch();}

四、實驗結果

圖1 用有序邊表算法生成的多邊形

五、總結與體會

實驗步驟

1)分析多邊形區域掃描線填充算法的原理,確定算法流程

① 初始化:構造邊表,AET表置空

② 將第一個不空的ET表中的邊插入AET表

③ 由AET表取出交點進行配對(奇偶)獲得填充區間,依次對這些填充區間著色

④ y=yi+1時,根據x=xi+1/k修改AET表所有結點中交點的x坐標。同時如果相 應的ET表不空,則將其中的結點插入AET表,形成新的AET表 ⑤ AET表不空,則轉(3),否則結束。2)編程實現

① 首先確定多邊形頂點和ET/AET表中結點的結構

② 編寫鏈表相關操作(如鏈表結點插入、刪除和排序等)

③ 根據1)中的算法結合上述已有的鏈表操作函數實現多邊形區域掃描線填充的主體功能

④ 編寫主函數,測試該算法 通過運用C語言環境下的圖像顯示設置,本次實驗我學會了多邊形區域掃描線填充的有序邊表算法,設計相關的數據結構(如鏈表結構、結點結構等),并將實現的算法應用于任意多邊形的填充,為深一步的學習做好了鋪墊。

六、參考文獻

[1]張家廣 等編著.計算機圖形學(第3版).北京:清華大學出版社,1998年9月.[2]陳傳波,陸楓主編,《計算機圖形學基礎》,電子工業出版社,2002年3月.

下載2012級碩士研究生計算機圖形學試題word格式文檔
下載2012級碩士研究生計算機圖形學試題.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    計算機圖形學心得體會

    計算機圖形學心得體會 姓名: 學號: 201203284 班級: 計科11202 序號: 31 院系: 計算機科學學院 通過一個學期的學習,經過老師細心的講解,我對圖形學這門課有了基礎的認識,從......

    計算機圖形學實驗報告

    0908141020 試驗092 尤洋 實驗1-1: 通過循環畫線,實現了畫四邊形的功能 實驗1-2: 通過循環設置頂點坐標,循環畫線,實現了畫7個頂點的金剛石 實驗1-3: 通過填充實現了畫三彩多邊形......

    計算機圖形學論文

    工欲善其事,必先利其器 ——淺析計算機圖形學及其作用 本學期學校開設了計算機圖形學,一開始不知計算機圖形學為何物的我不是很理解為什么要有這門課,但是經過一學期的洗禮過后......

    對于計算機圖形學感想

    計算機圖形學 1045532136 朱嘯林 我們班是計算機科學與技術,剛開始知道要上圖形學的時候我還是一頭霧水,覺得沒什么聯系,經過老師的點撥和自己的領悟,我明白了其中的道理。計算......

    計算機圖形學中英文關鍵詞

    Computer graphics 計算機圖形學 Two-dimensional 二維 Three-dimensional 三維 geometric transformation 幾何變換 composite transformations 復合變換 Two-dimensional......

    計算機圖形學結課論文

    計算機圖形學結課論文 ——計算機圖形學在虛擬現實領域的應用姓 名:班 級:學 號:系 部:環境與市政工程系xxxx xx給水排水工程x班 xxxxx 1 前言摘要:隨著計算機圖形學的不斷發展......

    計算機圖形學學習的心得體會

    對計算機圖形學課程學習的心得體會 通過一個學期的學習,了解了什么是計算機圖形學、什么是圖形API、為什么需要計算機圖形學以及計算機圖形學在各個領域的應用。計算機圖形學......

    計算機圖形學上機心得2

    計 算 機 圖 形 學 上機心得 指導教師:姓 名:學 號:何朝良 王奎 10260107 計算機圖形學是利用計算機研究圖形的表示、生成、處理和顯示的科學。簡單地說,計算機圖形學的主要......

主站蜘蛛池模板: 欧美牲交40_50a欧美牲交aⅴ| 亚洲成a人片在线不卡一二三区| 日韩av一区二区三区免费看| 大胸少妇午夜三级| 国产在视频线精品视频| 国产又色又爽又黄的在线观看| 乱子伦一区二区三区| 国产成人无码va在线播放| 人妻丰满被色诱中文字幕| 国产成人片无码免费视频| 日韩人妻无码精品一专区二区三区| 男人吃奶摸下挵进去好爽| 国产偷抇久久精品a片蜜臀av| 日本在线视频www色| 人妻少妇偷人无码视频| 中日韩精品视频在线观看| 性高湖久久久久久久久| 高h纯肉无码视频在线观看| 亚洲αv无码一区二区三区四区| 色欲国产麻豆一精品一av一免费| 国产精品日本一区二区在线播放| 和黑人邻居中文字幕在线| 欧美人与zoxxxx另类| 欧美性xxxxx极品少妇| 狼人大香伊蕉国产www亚洲| 亚洲图片日本视频免费| 亚洲综合色无码| 免费无码不卡视频在线观看| 七妺福利精品导航大全| 18禁成人???猛撞韩漫| 亚洲最大的成人网| 在线播放免费人成视频在线观看| 国产大陆亚洲精品国产| 欧洲成人午夜精品无码区久久| 日本xxxx色视频在线观看免费| 国产午夜亚洲精品不卡下载| 亚洲国产制服丝袜高清在线| 亚洲人成绝费网站色www吃脚| 成人做爰视频www网站小优视频| 人妻少妇456在线视频| 蜜芽亚洲av无码一区二区三区|