版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 信息科學(xué)與工程學(xué)院課程設(shè)計(jì)任務(wù)書(shū)</p><p> 題 目: Z-Buffer隱面算法的實(shí)現(xiàn) </p><p> 姓 名: </p><p> 學(xué) 號(hào):
2、 </p><p> 專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)、2010級(jí)本1班 </p><p> 課 程: 計(jì)算機(jī)圖形學(xué) </p><p> 指導(dǎo)教師: 職稱: 講 師 </p><p>
3、 完成時(shí)間: 2012年 12 月----2013年 1 月</p><p> 2012年12 月30日</p><p><b> 目 錄</b></p><p><b> 第1章 引言1</b></p><p> 第2章 計(jì)算機(jī)圖形學(xué)的發(fā)展歷史2</p><
4、p> 2.1 智能CAD2</p><p> 2.2計(jì)算機(jī)美術(shù)與設(shè)計(jì)2</p><p> 2.2.1 計(jì)算機(jī)美術(shù)的發(fā)展2</p><p> 2.3計(jì)算機(jī)動(dòng)畫(huà)藝術(shù)3</p><p> 2.3.1歷史的回顧3</p><p> 2.4科學(xué)計(jì)算可視化4</p><p>&
5、lt;b> 2.5虛擬現(xiàn)實(shí)4</b></p><p> 第3章 計(jì)算機(jī)圖形學(xué)的研究方向6</p><p> 第4章 Z-Buffer隱面算法的相關(guān)原理7</p><p> 4.1 Z-Buffer隱面算法簡(jiǎn)介7</p><p> 4.2 Z-Buffer隱面算法程序7</p><p
6、> 第5章 系統(tǒng)設(shè)計(jì)的相關(guān)代碼8</p><p> 5.1坐標(biāo)設(shè)置函數(shù)的相應(yīng)代碼8</p><p> 5.2旋轉(zhuǎn)角度函數(shù)相應(yīng)代碼8</p><p> 5.3多邊形填充9</p><p> 第6章 系統(tǒng)的運(yùn)行效果12</p><p> 6.1運(yùn)行主界面12</p><
7、p> 6.2不同方向鍵的運(yùn)行效果13</p><p> 第7章 總結(jié)16</p><p><b> 第1章 引言</b></p><p> 計(jì)算機(jī)圖形學(xué)一個(gè)主要的目的就是要利用計(jì)算機(jī)產(chǎn)生令人賞心悅目的真實(shí)感圖形。為此,必須建立圖形所描述的場(chǎng)景的幾何表示,再用某種光照模型,計(jì)算在假想的光源、紋理、材質(zhì)屬性下的光照明效果。所以
8、計(jì)算機(jī)圖形學(xué)與另一門學(xué)科計(jì)算機(jī)輔助設(shè)計(jì)有著密切的關(guān)系。事實(shí)上,圖形學(xué)也把可以表示幾何場(chǎng)景的曲線曲面造型技術(shù)和實(shí)體造型技術(shù)作為其主要的研究?jī)?nèi)容。同時(shí),真實(shí)感圖形計(jì)算的結(jié)果是以數(shù)字圖像的方式提供的,計(jì)算機(jī)圖形學(xué)也就和圖像處理有著密切的關(guān)系。</p><p> 真實(shí)感圖形繪制過(guò)程中,由于投影變換失去了深度信息,往往導(dǎo)致圖形的二義性。要消除這類二義性,就必須在繪制時(shí)消除被遮擋的不可見(jiàn)的線或面,習(xí)慣上稱之為消除隱藏線和隱
9、藏面,或簡(jiǎn)稱為消隱,經(jīng)過(guò)消隱得到的投影圖稱為物體的真實(shí)圖形。</p><p> 計(jì)算機(jī)圖形學(xué)狹義上是一種研究基于物理定律、經(jīng)驗(yàn)方法以及認(rèn)知原理,使用各種數(shù)學(xué)算法處理二維或三維圖形數(shù)據(jù),生成可視數(shù)據(jù)表現(xiàn)的科學(xué)。它是計(jì)算機(jī)科學(xué)的一個(gè)分支領(lǐng)域與應(yīng)用方向,主要關(guān)注數(shù)字合成與操作視覺(jué)的圖形內(nèi)容。廣義上來(lái)看,計(jì)算機(jī)圖形學(xué)不僅包含了從三維圖形建模、繪制到動(dòng)畫(huà)的過(guò)程,同時(shí)也包括了對(duì)二維矢量圖形 以及圖像視頻融合處理的研究。 計(jì)
10、算機(jī)圖形學(xué)經(jīng)過(guò)將近40年的發(fā)展,已進(jìn)入了較為成熟的發(fā)展期。目前,其主要應(yīng)用領(lǐng)域包括計(jì)算機(jī)輔助設(shè)計(jì)與加工,影視動(dòng)漫,軍事仿真,醫(yī)學(xué)圖像處理,氣象、地質(zhì)、財(cái)經(jīng)和電磁等的科學(xué)可視化等。由于計(jì)算機(jī)圖形學(xué)在這些領(lǐng)域的成功運(yùn)用,特別是在迅猛發(fā)展的動(dòng)漫產(chǎn)業(yè)中,帶來(lái)了可觀的經(jīng)濟(jì)效益。動(dòng)漫產(chǎn)業(yè)是目前各國(guó)優(yōu)先發(fā)展的綠色產(chǎn)業(yè),具有高科技、高投入與高產(chǎn)出等特點(diǎn)。據(jù)統(tǒng)計(jì),截至2009年3月,美國(guó)動(dòng)畫(huà)夢(mèng)工廠所拍攝的三維動(dòng)畫(huà)片《怪物史萊克II》在預(yù)算為1.5億美元的
11、情況下,獲得了超過(guò)9.2億的全球累計(jì)票房。而我國(guó)在2008年度共制作完成的國(guó)產(chǎn)電視動(dòng)畫(huà)片249部,計(jì)131042分鐘,與2007年度相比增加了近28%。另一方面,由于這些領(lǐng)域應(yīng)用的推動(dòng),也給計(jì)算機(jī)圖形學(xué)的發(fā)展提供了新的發(fā)展機(jī)遇</p><p> 第2章 計(jì)算機(jī)圖形學(xué)的發(fā)展歷史</p><p><b> 2.1 智能CAD</b></p><p
12、> CAD 的發(fā)展也顯現(xiàn)出智能化的趨勢(shì),就目前流行的大多數(shù)CAD軟件來(lái)看,主要功能是支持產(chǎn)品的后續(xù)階段一一工程圖的繪制和輸出,產(chǎn)品設(shè)計(jì)功能相對(duì)薄弱,利用AutoCAD最常用的功能還是交互式繪圖,如果要想進(jìn)行產(chǎn)品設(shè)計(jì),最基本的是要其中的AutoLis語(yǔ)言編寫(xiě)程序,有時(shí)還要用其他高級(jí)語(yǔ)言協(xié)助編寫(xiě),很不方便。而新一代的智能CAD系統(tǒng)可以實(shí)現(xiàn)從概念設(shè)計(jì)到結(jié)構(gòu)設(shè)計(jì)的全過(guò)程。例如,德國(guó)西門子公司開(kāi)發(fā)的Sigraph Design軟件可以實(shí)現(xiàn)
13、如下功能:①?gòu)囊婚_(kāi)始就可以用計(jì)算機(jī)設(shè)計(jì)草圖,不必耗時(shí)費(fèi)力的輸入精確的坐標(biāo)點(diǎn),能隨心所欲的修改,一旦結(jié)構(gòu)確定,給出正確的尺寸即得到滿意的圖紙;②這個(gè)軟件中具有關(guān)系數(shù)據(jù)結(jié)構(gòu),當(dāng)你改變圖紙的局部,相關(guān)部分自動(dòng)變化,在一個(gè)視圖上的修改,其他視圖自動(dòng)修改,甚至改變一個(gè)零件圖,相關(guān)的其它零件圖以及裝配圖的相關(guān)部分自動(dòng)修改:③在各個(gè)專業(yè)領(lǐng)域中,有一些常用件和標(biāo)準(zhǔn)件,因此,希望有一個(gè)參數(shù)化圖庫(kù)。而Sigraph不用編程只需畫(huà)一遍圖就能建成自己的圖庫(kù);④
14、Sigraph還可以實(shí)現(xiàn)產(chǎn)品設(shè)計(jì)的動(dòng)態(tài)模擬用于觀察設(shè)計(jì)的裝置在實(shí)際運(yùn)行中是否合理等等。</p><p> 智能CAD的另一個(gè)領(lǐng)域是工程圖紙的自動(dòng)輸入與智能識(shí)別,隨著CAD技術(shù)的迅速推廣應(yīng)用,各個(gè)工廠、設(shè)計(jì)院都需將成千上萬(wàn)張長(zhǎng)期積累下來(lái)的設(shè)計(jì)圖紙快速而準(zhǔn)確輸入計(jì)算機(jī),作為新產(chǎn)品開(kāi)發(fā)的技術(shù)資料。多年來(lái),CAD 中普遍采用的圖形輸入方法是圖形數(shù)字化儀交互輸入和鼠標(biāo)加鍵盤(pán)的交互輸入方法.很難適應(yīng)工程界大量圖紙輸入的迫切
15、需要。因此, 基于光電掃描儀的圖紙自動(dòng)輸入方法已成為國(guó)內(nèi)外CAD工作者的努力探索的新課題。但由于工程圖的智能識(shí)別涉及到計(jì)算機(jī)的硬件、計(jì)算機(jī)圖形學(xué)、模式識(shí)別及人工智能等高新技術(shù)內(nèi)容,使得研究工作的難點(diǎn)較大。工程圖的自動(dòng)輸入與智能識(shí)別是兩個(gè)密不可分的過(guò)程,用掃描儀將手繪圖紙輸入到計(jì)算機(jī)后,形成的是點(diǎn)陣圖象。</p><p> 2.2計(jì)算機(jī)美術(shù)與設(shè)計(jì)</p><p> 2.2.1 計(jì)算機(jī)美術(shù)
16、的發(fā)展 </p><p> 1952年.美國(guó)的Ben .Laposke用模擬計(jì)算機(jī)做的波型圖《電子抽象畫(huà)》預(yù)示著電腦美術(shù)的開(kāi)始(比計(jì)算機(jī)圖形學(xué)的正式確立還要早)。計(jì)算機(jī)美術(shù)的發(fā)展可分為三個(gè)階段: </p><p> (1)早期探索階段(1952 1968年)主創(chuàng)人員大部分為科學(xué)家和工程師,作品以平面幾何圖形為主。1963年美國(guó)《計(jì)算機(jī)與自動(dòng)化》雜志開(kāi)始舉辦年度“計(jì)算機(jī)美術(shù)比賽”。
17、</p><p> 代表作品:1960年Wiuiam Ferrter為波音公司制作的人體工程學(xué)實(shí)驗(yàn)動(dòng)態(tài)模擬.模擬飛行員在飛機(jī)中各種情況;1963年Kenneth Know Iton的打印機(jī)作品《裸體》。1967年日本GTG小組的《回到方塊》。 </p><p> (2)中期應(yīng)用階段(1968年~1983年)以1968年倫敦第一次世界計(jì)算機(jī)美術(shù)大展一“控制論珍寶 (Cybernehic
18、Serendipity1為標(biāo)志,進(jìn)入世界性研究與應(yīng)用階段;計(jì)算機(jī)與計(jì)算機(jī)圖形技術(shù)逐步成熟, 一些大學(xué)開(kāi)始設(shè)置相關(guān)課題, 出現(xiàn)了一些CAD應(yīng)用系統(tǒng)和成果, 三維造型系統(tǒng)產(chǎn)生并逐漸完善。代表作品:1983年美國(guó)IBM 研究所Richerd Voss設(shè)計(jì)出分形山。</p><p> (3)應(yīng)用與普及階段(1984年~現(xiàn)在)以微機(jī)和工作站為平臺(tái)的個(gè)人計(jì)算機(jī)圖形系統(tǒng)逐漸走向成熟, 大批商業(yè)性美術(shù)(設(shè)計(jì))軟件面市; 以蘋(píng)果
19、公司的MAC 機(jī)和圖形化系統(tǒng)軟件為代表的桌面創(chuàng)意系統(tǒng)被廣泛接受,CAD成為美術(shù)設(shè)計(jì)領(lǐng)域的重要組成部分。代表作品:1990年Jefrey Shaw的交互圖形作品“易讀的城市f The legible city”。</p><p> 2.3計(jì)算機(jī)動(dòng)畫(huà)藝術(shù)</p><p> 2.3.1歷史的回顧 </p><p> 計(jì)算機(jī)動(dòng)畫(huà)技術(shù)的發(fā)展是和許多其它學(xué)科的發(fā)展密切相關(guān)
20、的。計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)繪畫(huà)、計(jì)算機(jī)音樂(lè)、計(jì)算機(jī)輔助設(shè)計(jì)、電影技術(shù)、電視技術(shù)、計(jì)算機(jī)軟件和硬件技術(shù)等眾多學(xué)科的最新成果都對(duì)計(jì)算機(jī)動(dòng)畫(huà)技術(shù)的研究和發(fā)展起著十分重要的推動(dòng)作用50年代到60年代之間,大部分的計(jì)算機(jī)繪畫(huà)藝術(shù)作品都是在打印機(jī)和繪圖儀上產(chǎn)生的。一直到60年代后期,才出現(xiàn)利用計(jì)算機(jī)顯示點(diǎn)陣的特性,通過(guò)精心地設(shè)計(jì)圖案來(lái)進(jìn)行計(jì)算機(jī)藝術(shù)創(chuàng)造的活動(dòng)。 </p><p> 70年代開(kāi)始.計(jì)算機(jī)藝術(shù)走向繁榮和成熟 19
21、73 年,在東京索尼公司舉辦了“首屆國(guó)際計(jì)算機(jī)藝術(shù)展覽會(huì)”80年代至今,計(jì)算機(jī)藝術(shù)的發(fā)展速度遠(yuǎn)遠(yuǎn)超出了人們的想象 在代表計(jì)算機(jī)圖形研究最高水平的歷屆SIGGRAPH年會(huì)上,精彩的計(jì)算機(jī)藝術(shù)作品層出不窮。另外,在此期間的奧斯卡獎(jiǎng)的獲獎(jiǎng)名單中,采用計(jì)算機(jī)特技制作電影頻頻上榜,大有舍我其誰(shuí)的感覺(jué)。在中國(guó),首屆計(jì)算機(jī)藝術(shù)研討會(huì)和作品展示活動(dòng)于1995年在北京舉行。它總結(jié)了近年來(lái)計(jì)算機(jī)藝術(shù)在中國(guó)的發(fā)展,對(duì)未來(lái)的工作起到了重要的推動(dòng)作用。 <
22、/p><p> 2.3.2在電影特技中的應(yīng)用</p><p> 計(jì)算機(jī)動(dòng)畫(huà)的一個(gè)重要應(yīng)用就是制作電影特技 可以說(shuō)電影特技的發(fā)展和計(jì)算機(jī)動(dòng)畫(huà)的發(fā)展是相互促進(jìn)的。1987年由著名的計(jì)算機(jī)動(dòng)畫(huà)專家塔爾曼夫婦領(lǐng)導(dǎo)的MIRA 實(shí)驗(yàn)室制作了一部七分鐘的計(jì)算機(jī)動(dòng)畫(huà)片《相會(huì)在蒙特利爾》 再現(xiàn)了國(guó)際影星瑪麗蓮·夢(mèng)露的風(fēng)采。1988年,美國(guó)電影《誰(shuí)陷害了兔子羅杰》 (Who Framed Roger
23、 Rabbit?)中二維動(dòng)畫(huà)人物和真實(shí)演員的完美結(jié)合,令人瞠目結(jié)舌、嘆為觀止 其中用了不少計(jì)算機(jī)動(dòng)畫(huà)處理。1991年美國(guó)電影《終結(jié)者II:世界末日》展現(xiàn)了奇妙的計(jì)算機(jī)技術(shù)。此外,還有《侏羅紀(jì)公園》(Jurassic Park)、《獅子王》、《玩具總動(dòng)員》(Toy Story)等。</p><p> 2.4科學(xué)計(jì)算可視化</p><p> 科學(xué)計(jì)算的可視化是發(fā)達(dá)國(guó)家八十年代后期提出并發(fā)展
24、起來(lái)的一門新興技術(shù),它將科學(xué)計(jì)算過(guò)程中及計(jì)算結(jié)果的數(shù)據(jù)轉(zhuǎn)換為幾何圖形及圖象信息在屏幕上顯示出來(lái)并進(jìn)行交互處理,成為發(fā)現(xiàn)和理解科學(xué)計(jì)算過(guò)程中各種現(xiàn)象的有力工具。 </p><p> 1987年2月英國(guó)國(guó)家科學(xué)基金會(huì)在華盛頓召開(kāi)了有關(guān)科學(xué)計(jì)算可視化的首次會(huì)議。會(huì)議一致認(rèn)為“將圖形和圖象技術(shù)應(yīng)用于科學(xué)計(jì)算是一個(gè)全新的領(lǐng)域” 科學(xué)家們不僅需要分析由計(jì)算機(jī)得出的計(jì)算數(shù)據(jù),而且需要了解在計(jì)算機(jī)過(guò)程中數(shù)據(jù)的變化。會(huì)議將這一技
25、術(shù)定名為“科學(xué)計(jì)算可視化(Visualization in Scientific Computing)”。科學(xué)計(jì)算可視化將圖形生成技術(shù)圖象理解技術(shù)結(jié)合在一起, 它即可理解送入計(jì)算機(jī)的圖象數(shù)據(jù).也可以從復(fù)雜的多維數(shù)據(jù)中產(chǎn)生圖形。它涉及到下列相互獨(dú)立的幾個(gè)領(lǐng)域:計(jì)算機(jī)圖形學(xué)、圖象處理、計(jì)算機(jī)視覺(jué)、計(jì)算機(jī)輔助設(shè)計(jì)及交互技術(shù)等??茖W(xué)計(jì)算可視按其實(shí)現(xiàn)的功能來(lái)分,可以分為三個(gè)檔次:(1)結(jié)果數(shù)據(jù)的后處理;(2)結(jié)果數(shù)據(jù)的實(shí)時(shí)跟蹤處理及顯示;(3)結(jié)
26、果數(shù)據(jù)的實(shí)時(shí)顯示及交互處理。</p><p><b> 2.5虛擬現(xiàn)實(shí)</b></p><p> “虛擬現(xiàn)實(shí)”(Virtual Reality)- 詞是由美國(guó)噴氣推動(dòng)實(shí)驗(yàn)室(VPL)的創(chuàng)始人拉尼爾(Jaron Lanier)首先提出的 在克魯格(Myren Kruege)70年代中早期實(shí)驗(yàn)里.被稱為 人工現(xiàn)實(shí)”(Artificial reality);而在吉布森(
27、William Gibson)l984 年出版的科幻小說(shuō)Neuremanccr里,又被稱為“可控空間”(Cyberspaee)。虛擬現(xiàn)實(shí), 也育人稱之為虛擬環(huán)境(Virtual Environment)是美國(guó)國(guó)家航空和航天局及軍事部門為模擬而開(kāi)發(fā)的一門高新技術(shù) 它利用計(jì)算機(jī)圖形產(chǎn)生器,位置跟蹤器,多功能傳感器和控制器等有效地模擬實(shí)際場(chǎng)景和情形,從而能夠使觀察者產(chǎn)生一種真實(shí)的身臨其境的感覺(jué)虛擬環(huán)境由硬件和軟件組成,硬件部分主要包括:傳感器
28、(Sensors)、印象器(Efeeter)和連接侍感器與印象器 產(chǎn)生模擬物理環(huán)境的特殊硬件。利用虛擬現(xiàn)實(shí)技術(shù)產(chǎn)生虛擬現(xiàn)實(shí)環(huán)境的軟件需完成以下三個(gè)功能:建立作用器(Actors)以及物體的外形和動(dòng)力學(xué)模型:建立物體之間以及周圍環(huán)境之間接照牛頓運(yùn)動(dòng)定律所決定的相互作用;描述周圍環(huán)境的內(nèi)容特性 </p><p> 虛擬現(xiàn)實(shí)技術(shù)主要研究用計(jì)算機(jī)模擬(構(gòu)造)三維圖形空間,并使用戶能夠自然地與該空間進(jìn)行交互。它涉及很多科
29、學(xué)的知識(shí),對(duì)三維圖形處理技術(shù)的要求特別高。簡(jiǎn)單的虛擬現(xiàn)實(shí)系統(tǒng)早在70年代便被應(yīng)用于軍事領(lǐng)域,訓(xùn)練駕駛員。80年代后隨著計(jì)算機(jī)軟硬件技術(shù)的提高,它也得到重視并迅速發(fā)展。目前它已在航空航天、醫(yī)學(xué)、教育、藝術(shù)、建筑等領(lǐng)域得到初步的應(yīng)用。例如,1997年7月,美國(guó)航天局的旅居者號(hào)火星車著陸距地球約1.9億公里的火星。這輛在火星表面緩慢爬行的小車中并沒(méi)有駕駛員,它是由地球上的工程師通過(guò)虛擬現(xiàn)實(shí)系統(tǒng)操縱的。</p><p>
30、 第3章 計(jì)算機(jī)圖形學(xué)的研究方向</p><p> 計(jì)算機(jī)圖形學(xué)經(jīng)過(guò)將近40年的發(fā)展,已進(jìn)入了較為成熟的發(fā)展期。目前,其主要應(yīng)用領(lǐng)域包括計(jì)算機(jī)輔助設(shè)計(jì)與加工,影視動(dòng)漫,軍事仿真,醫(yī)學(xué)圖像處理,氣象、地質(zhì)、財(cái)經(jīng)和電磁等的科學(xué)可視化等。由于計(jì)算機(jī)圖形學(xué)在這些領(lǐng)域的成功運(yùn)用,特別是在迅猛發(fā)展的動(dòng)漫產(chǎn)業(yè)中,帶來(lái)了可觀的經(jīng)濟(jì)效益。動(dòng)漫產(chǎn)業(yè)是目前各國(guó)優(yōu)先發(fā)展的綠色產(chǎn)業(yè),具有高科技、高投入與高產(chǎn)出等特點(diǎn)。</p&g
31、t;<p> 從計(jì)算機(jī)圖形學(xué)目前學(xué)科發(fā)展來(lái)看,有以下幾個(gè)發(fā)展趨勢(shì): </p><p> (1)與圖形硬件的發(fā)展緊密結(jié)合,突破實(shí)時(shí)高真實(shí)感、高分辨率渲染的技術(shù)難點(diǎn)。</p><p> ?。?) 研究和諧自然的三維模型建模方法。</p><p> ?。?) 利用日益增長(zhǎng)的計(jì)算性能,實(shí)現(xiàn)具有高度物理真實(shí)的動(dòng)態(tài)仿真。</p><p>
32、; ?。?) 研究多種高精度數(shù)據(jù)獲取與處理技術(shù),增強(qiáng)圖形技術(shù)的表現(xiàn)。</p><p> ?。?) 計(jì)算機(jī)圖形學(xué)與圖像視頻處理技術(shù)的結(jié)合。</p><p> ?。?) 從追求絕對(duì)的真實(shí)感向追求與強(qiáng)調(diào)圖形的表意性轉(zhuǎn)變</p><p> 第4章 Z-Buffer隱面算法的相關(guān)原理</p><p> 4.1 Z-Buffer隱面算法簡(jiǎn)介<
33、/p><p> 在這個(gè)算法里,不僅需要有幀緩存來(lái)存放每個(gè)像素的顏色值,還需要有一個(gè)深度緩存來(lái)存放每一個(gè)像素的深度值。</p><p> Z緩沖器中每個(gè)單元的值是對(duì)應(yīng)像素點(diǎn)所反映對(duì)象的z坐標(biāo)值,初值取z的極小值;幀緩沖器每個(gè)單元的初值可放對(duì)應(yīng)背景顏色的值。圖形消隱的過(guò)程就是給幀緩沖器和Z緩沖器中相應(yīng)過(guò)程填值得過(guò)程。在把顯示對(duì)象的每個(gè)面上每一點(diǎn)的屬性(顏色或灰度)值填入幀緩沖器相應(yīng)單元前,要把
34、這點(diǎn)的z坐標(biāo)值和Z緩沖器中相應(yīng)單元的值進(jìn)行比較,只有前者大于后者時(shí)才改變幀緩沖器的該單元的值,同時(shí)Z緩沖器中相應(yīng)單元的值也要改成這點(diǎn)的z坐標(biāo)值。如果這點(diǎn)的z坐標(biāo)值小于Z緩沖器中的值,則說(shuō)明對(duì)應(yīng)像素已經(jīng)顯示了對(duì)象上一個(gè)點(diǎn)的屬性,改點(diǎn)要比考慮的點(diǎn)更接近觀察點(diǎn)。對(duì)顯示對(duì)象的每個(gè)面上的每個(gè)點(diǎn)都進(jìn)行上述處理后,便可得到消隱了隱藏面的圖。</p><p> 4.2 Z-Buffer隱面算法程序</p><
35、;p> Z-Buffer()</p><p> { 幀緩存全置為背景色;</p><p> 深度緩存全置為最小Z值;</p><p> for(每一個(gè)多邊形)</p><p> { 掃描轉(zhuǎn)換該多邊形;</p><p> for(該多邊形所覆蓋的每個(gè)像素(x,y))</p>&
36、lt;p> {計(jì)算該多邊形在該像素的深度值Z(x,y) ;</p><p> if (Z(x,y)大于Z緩存在(x,y)的值)</p><p> { 把Z(x,y)存入Z緩存中的(x,y);</p><p> 把多邊形在(x,y)處的顏色值存入幀緩存的(x,y)處;</p><p><b> }</b>
37、;</p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p> Z-Buffer算法在像素級(jí)上以近物取代遠(yuǎn)物,形體在屏幕上的出現(xiàn)順序是無(wú)關(guān)緊要的,這種取代算法有利于硬件實(shí)現(xiàn)。</p&
38、gt;<p> 第5章 系統(tǒng)設(shè)計(jì)的相關(guān)代碼</p><p> 5.1坐標(biāo)設(shè)置函數(shù)的相應(yīng)代碼</p><p><b> 該函數(shù)代碼如下:</b></p><p> void CTestView::ZBuffer({</p><p> CRect Rect;</p><p>
39、 GetClientRect(&Rect);</p><p> CClientDC dc(this);</p><p> dc.SetMapMode(MM_ANISOTROPIC);//自定義坐標(biāo)系</p><p> dc.SetWindowExt(Rect.Width(),Rect.Height());</p><p> d
40、c.SetViewportExt(Rect.right,-Rect.bottom);//x軸垂直向右,y軸垂直向上</p><p> dc.SetViewportOrg(Rect.right/2,Rect.bottom/2);//屏幕中心為圓心</p><p> CDCMemDC;</p><p> MemDC.CreateCompatibleDC(Get
41、DC());</p><p> MemDC.SetMapMode(MM_ANISOTROPIC);</p><p> MemDC.SetWindowExt(Rect.Width(),Rect.Height());</p><p> MemDC.SetViewportExt(Rect.right,-Rect.bottom);</p><p&g
42、t; MemDC.SetViewportOrg(Rect.right/2,Rect.bottom/2);</p><p> CBitmap Bitmap,*OldBitmap;</p><p> Bitmap.LoadBitmap(IDB_BITMAP2);</p><p> OldBitmap=MemDC.SelectObject(&Bitmap)
43、;</p><p> MemDC.BitBlt(-Rect.right/2,-Rect.bottom/2,Rect.Width(),Rect.Height(),&Picture,-Rect.right/2,-Rect.bottom/2,SRCCOPY);</p><p> m_Paint(&MemDC);</p><p> dc.BitBlt(
44、-Rect.right/2,-Rect.bottom/2,Rect.right,Rect.bottom,&MemDC,-Rect.right/2,-Rect.bottom/2,SRCCOPY);</p><p> MemDC.SelectObject(OldBitmap);</p><p><b> }</b></p><p>
45、5.2旋轉(zhuǎn)角度函數(shù)相應(yīng)代碼</p><p><b> 該函數(shù)代碼如下:</b></p><p> void CTestView::Angle()</p><p> {//將Boxx方向旋轉(zhuǎn)m_AngleX度,y方向旋轉(zhuǎn)m_AngleY度</p><p> for(int i=0;i<8;i++)//Box有
46、8個(gè)頂點(diǎn)</p><p><b> {</b></p><p> MyPointTmpPoint;</p><p> TmpPoint.x=m_OldBox.m_Point[i].x;</p><p> TmpPoint.y=ROUND(m_OldBox.m_Point[i].y*cos(m_AngleX*PI
47、/180)+m_OldBox.m_Point[i].z*sin(m_AngleX*PI/180));</p><p> TmpPoint.z=ROUND(-m_OldBox.m_Point[i].y*sin(m_AngleX*PI/180)+m_OldBox.m_Point[i].z*cos(m_AngleX*PI/180));</p><p> m_Box.m_Point[i].
48、x=ROUND(-TmpPoint.z*sin(m_AngleY*PI/180)+TmpPoint.x*cos(m_AngleY*PI/180));</p><p> m_Box.m_Point[i].y=TmpPoint.y;</p><p> m_Box.m_Point[i].z=TmpPoint.z*cos(m_AngleY*PI/180)+TmpPoint.x*sin(m_An
49、gleY*PI/180);</p><p><b> }</b></p><p><b> 5.3多邊形填充</b></p><p><b> 代碼如下:</b></p><p> void CTestView::PolygonFill(CDC* mdc) </p
50、><p><b> {</b></p><p> //計(jì)算直線deep增量</p><p> doubleCurDeep=0.0;//當(dāng)前掃描線的深度</p><p> doubleDeepStep=0.0;//當(dāng)前掃描線隨著x增長(zhǎng)的深度步長(zhǎng)</p><p> doubleA=0.0
51、;//平面方程系數(shù)A</p><p> doubleB=0.0;//平面方程系數(shù)B</p><p> doubleC=0.0;//平面方程系數(shù)C</p><p> doubleD=0.0;//平面方程系數(shù)D</p><p> //計(jì)算當(dāng)前面方程Ax+By+Cz+D=0的系數(shù)</p><p> A=(P
52、oint[1].y-Point[2].y)*(Point[1].z-Point[3].z)-(Point[1].y-Point[3].y)*(Point[1].z-Point[2].z);</p><p> B=(Point[1].x-Point[3].x)*(Point[1].z-Point[2].z)-(Point[1].z-Point[3].z)*(Point[1].x-Point[2].x);</
53、p><p> C=(Point[1].x-Point[2].x)*(Point[1].y-Point[3].y)-(Point[1].x-Point[3].x)*(Point[1].y-Point[2].y);</p><p> D=-A*Point[1].x-B*Point[1].y-C*Point[1].z;</p><p> //計(jì)算curDeep;從x=x
54、Min開(kāi)始計(jì)算,此時(shí)針對(duì)yi</p><p> DeepStep=-A/C;</p><p> HeadE=NULL;</p><p> for(CurrentB=HeadB;CurrentB!=NULL;CurrentB=CurrentB->next)//訪問(wèn)所有桶結(jié)點(diǎn)</p><p> {for(CurrentE=Curre
55、ntB->p;CurrentE!=NULL;CurrentE=CurrentE->next)//訪問(wèn)桶中排序前的邊結(jié)點(diǎn)</p><p> { Edge *TEdge=new Edge;</p><p> TEdge->x=CurrentE->x;</p><p> TEdge->yMax=CurrentE->yMax
56、;</p><p> TEdge->k=CurrentE->k;</p><p> TEdge->next=NULL;</p><p> AddAet(TEdge);//將該邊插入臨時(shí)Aet表}</p><p> AetOrder();//使得Aet表按照x遞增的順序存放</p><p&
57、gt; T1=HeadE;//根據(jù)ymax拋棄掃描完的邊結(jié)點(diǎn)</p><p> if(T1==NULL)</p><p> { return;}</p><p> while(CurrentB->ScanLine>=T1->yMax)//放棄該結(jié)點(diǎn),Aet表指針后移</p><p> { T1=T1->
58、next;</p><p><b> HeadE=T1;</b></p><p> if(HeadE==NULL)</p><p> { return;} }</p><p> if(T1->next!=NULL)</p><p><b> { T2=T1;&l
59、t;/b></p><p> T1=T2->next;}</p><p> while(T1!=NULL)</p><p> { if(CurrentB->ScanLine>=T1->yMax)//跳過(guò)一個(gè)結(jié)點(diǎn)</p><p> { T2->next=T1->next;</p>
60、;<p> T1->next=NULL;</p><p> T1=T2->next; }</p><p><b> else</b></p><p> { T2=T1;</p><p> T1=T2->next;}}</p><p> BOOL I
61、n=false;//設(shè)置一個(gè)BOOL變量In,初始值為假</p><p> double xb,xe;//掃描線的起點(diǎn)和終點(diǎn)</p><p> for(T1=HeadE;T1!=NULL;T1=T1->next)//填充掃描線和多邊形相交的區(qū)間</p><p> { if(In==false)</p><p> { x
62、b=T1->x; CurDeep=-(xb*A+CurrentB->ScanLine*B+D)/C;//z=-(Ax+By-D)/C</p><p> In=true;//每訪問(wèn)一個(gè)結(jié)點(diǎn),把In值取反一次}</p><p> else//如果In值為真,則填充從當(dāng)前結(jié)點(diǎn)的x值開(kāi)始到下一結(jié)點(diǎn)的x值結(jié)束的區(qū)間</p><p> { x
63、e=T1->x;</p><p> for(double x=xb;x<=xe;x++){</p><p> if(CurDeep>=ZB[ROUND(x)+200][CurrentB->ScanLine+200])//如果新的采樣點(diǎn)的深度大于原采樣點(diǎn)的深度</p><p> { ZB[ROUND(x)+200][Current
64、B->ScanLine+200]=CurDeep;//xy坐標(biāo)與數(shù)組下標(biāo)保持一致,加200</p><p> mdc->SetPixel(ROUND(x),CurrentB->ScanLine,RGB[Face]);}</p><p> CurDeep+=DeepStep;}</p><p> In=false; }}</p&
65、gt;<p> for(T1=HeadE;T1!=NULL;T1=T1->next)//邊連貫性</p><p> { T1->x=T1->x+T1->k;//x=x+1/k } }</p><p> delete HeadB; </p><p> delete CurrentB;</p><
66、;p> delete CurrentE;</p><p> delete HeadE;}</p><p> 第6章 系統(tǒng)的運(yùn)行效果</p><p><b> 6.1運(yùn)行主界面</b></p><p> 程序代碼無(wú)錯(cuò)誤,執(zhí)行如圖6-1程序主界面所示</p><p> 圖 6-1
67、 程序主界面</p><p> 6.2不同方向鍵的運(yùn)行效果</p><p> 圖6-2 按下方向鍵“↑”所示界面</p><p> 圖6-3 按下方向鍵“↓”所示界面</p><p> 圖6-4按下方向鍵“←”所示界面</p><p> 圖6-4按下方向鍵“→”所示界面</p><p
68、><b> 第7章 總結(jié)</b></p><p> 通過(guò)本學(xué)期計(jì)算機(jī)圖形學(xué)的學(xué)習(xí),對(duì)計(jì)算機(jī)圖形學(xué)的歷史、發(fā)展、研究方向、以及涉及的知識(shí)原理有了進(jìn)一步的了解。Buffer消隱算法在像素級(jí)上以近物取代遠(yuǎn)物,形體在屏幕上的出現(xiàn)次序是無(wú)關(guān)緊要的,這種取代算法實(shí)現(xiàn)起來(lái)遠(yuǎn)比總體排序靈活簡(jiǎn)單,有利于硬件實(shí)現(xiàn)。然而,Z-Buffer算法也存在缺點(diǎn):占用空間大,沒(méi)有利用圖形的相關(guān)性與連續(xù)性。<
69、;/p><p> 計(jì)算機(jī)圖形學(xué)主要目的就是利用計(jì)算機(jī)表達(dá)真實(shí)感圖形。經(jīng)過(guò)這學(xué)期圖形學(xué)的學(xué)習(xí),我對(duì)這門學(xué)科產(chǎn)生了興趣。</p><p> 在系統(tǒng)設(shè)計(jì)過(guò)程中,盡管過(guò)程中任由許多不會(huì)的地方,而且有待于今后的提高和改進(jìn),但我加深了對(duì)書(shū)本上知識(shí)的理解與掌握,同時(shí)也學(xué)到了很多書(shū)本上沒(méi)有東西,并積累了一些寶貴的經(jīng)驗(yàn),這對(duì)我以后的學(xué)習(xí)與工作是不無(wú)裨益的。這次課設(shè)用TC編寫(xiě),之前我對(duì)于TC還有很多不了解的地
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖形學(xué)課程設(shè)計(jì)-- 計(jì)算機(jī)圖形學(xué)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)--圖形學(xué)基礎(chǔ)圖形處理實(shí)現(xiàn)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)圖形學(xué)論文-計(jì)算機(jī)圖形學(xué)
- barsky直線裁剪算法計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)-有效邊表填充算法的實(shí)現(xiàn)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)--- 轉(zhuǎn)動(dòng)鐘表
- 有效邊表填充算法的實(shí)現(xiàn)計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)
- 圖形學(xué)教案計(jì)算機(jī)圖形學(xué)a
- 計(jì)算機(jī)圖形學(xué)編程練習(xí)7z-buffering算法實(shí)現(xiàn)
- 計(jì)算機(jī)圖形學(xué)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)-- 彈跳的彩球動(dòng)畫(huà)
- 計(jì)算機(jī)圖形學(xué)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)構(gòu)造完整系統(tǒng)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)——掃雷游戲程序設(shè)計(jì)
- 計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)--圓柱面圖像紋理映射算法
- 計(jì)算機(jī)圖形學(xué)簡(jiǎn)介
- 計(jì)算機(jī)圖形學(xué)題庫(kù)
- 計(jì)算機(jī)圖形學(xué)答案
評(píng)論
0/150
提交評(píng)論