計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告及代碼_第1頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告及代碼_第2頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告及代碼_第3頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告及代碼_第4頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告及代碼_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章概述一、教學(xué)目標(biāo)通過本章的學(xué)習(xí),使學(xué)生能夠了解計(jì)算機(jī)圖形學(xué)的基本概念、研究內(nèi)容:當(dāng)前的發(fā)展概況;本門課程的特點(diǎn)和應(yīng)用。二、教學(xué)要求了解計(jì)算機(jī)圖形學(xué)的概念和研究內(nèi)容;了解本門課程的發(fā)展概況。三、教學(xué)內(nèi)容提要計(jì)算機(jī)圖形學(xué)的研究內(nèi)容計(jì)算機(jī)圖形學(xué)發(fā)展概況計(jì)算機(jī)圖形學(xué)特點(diǎn)和應(yīng)用計(jì)算機(jī)圖形學(xué)當(dāng)前研究的課題計(jì)算機(jī)圖形生成和輸出的流水線四、教學(xué)重點(diǎn)、難點(diǎn)及解決方法本章將全要圍以計(jì)算機(jī)圖形學(xué)的基本概念進(jìn)行介紹,介紹研究內(nèi)容;當(dāng)前的發(fā)展概況;本門課程的特點(diǎn)和應(yīng)用等等。五、課時(shí)安排2學(xué)時(shí)六、教學(xué)設(shè)備多媒體七、檢測教學(xué)目標(biāo)實(shí)現(xiàn)程度的具體措施和要求通過課堂提問的方式來檢測學(xué)生對基本概念的掌握程度。八、教學(xué)內(nèi)容1.1計(jì)算機(jī)圖形學(xué)的研究內(nèi)容計(jì)算機(jī)圖形學(xué)(ComputerGraphics):研究通過計(jì)算機(jī)將數(shù)據(jù)轉(zhuǎn)換為圖形,并在專用顯示設(shè)備上顯示的原理、方法和技術(shù)的學(xué)科。計(jì)算機(jī)圖形表現(xiàn)形式.線條式(線框架圖)用線段來表現(xiàn)圖形,容易反映客觀實(shí)體的內(nèi)部結(jié)構(gòu),如各類工程技術(shù)中結(jié)構(gòu)圖的表示,機(jī)械設(shè)計(jì)中零件結(jié)構(gòu)圖及電路設(shè)計(jì)中的電路原理圖等。具有面模型、色彩、濃淡和明暗層次效應(yīng),適合表現(xiàn)客觀實(shí)體的外形或外貌,如汽車、飛機(jī)、輪船等的外形設(shè)計(jì)以及各種藝術(shù)品造型設(shè)計(jì)等。.真實(shí)感面模型圖形跑車靚照計(jì)算機(jī)圖形分類(空間).二維圖形(2D):在平面坐標(biāo)系中定義的圖形.三維圖形(3D):在三維坐標(biāo)系中定義的圖形計(jì)算機(jī)圖形產(chǎn)生方法.矢量法(短折線法)任何形狀的曲線都用許多首尾相連的短直線(矢量)逼近。.描點(diǎn)法(像素點(diǎn)串接法)每一曲線都是由一定大小的像素點(diǎn)組成計(jì)算機(jī)繪圖方式:(1)交互式繪圖允許操作者以某種方式(對話方式或命令方式)來控制和操縱圖形生成過程,使得圖形可以邊生成、邊顯示、邊修改,直至符合要求為止。如AUTOCAD等(2)被動式繪圖圖形在生成過程中,操作者無法對圖形進(jìn)行操作和控制。如C語言繪圖圖形的操作與處理方法(PictureManipulation)如圖形的開窗、裁剪、平移、旋轉(zhuǎn)、放大、縮小、投影等各種幾何變換操作的方法及其軟件或硬件實(shí)現(xiàn)技術(shù)。圖形信息的存儲,檢索與交換技術(shù):如圖形信息的各種表示方法、組織形式、存取技術(shù)、圖形數(shù)據(jù)庫的管理、圖形信息通信等。人機(jī)交互及用戶接口技術(shù):如新型定位設(shè)備、選擇設(shè)備的研究:各種交互技術(shù),如構(gòu)造技術(shù)、命令技術(shù)、選擇技術(shù)、響應(yīng)技術(shù)等的研究,以及用戶模型、命令語言、反饋方法、窗口系統(tǒng)等用戶接口技術(shù)的研究。計(jì)算機(jī)圖形學(xué)發(fā)展概況1962年美國麻省理工學(xué)院林肯實(shí)驗(yàn)室的IvanE?Suthland,首先提出了“計(jì)算機(jī)圖形學(xué)”(ComputerGraphics)這一術(shù)語,引入了分層存儲符號的數(shù)據(jù)結(jié)構(gòu),開發(fā)出了交互技術(shù);可用鍵盤和光筆實(shí)現(xiàn)定位、選項(xiàng)和繪圖。奠定了計(jì)算機(jī)圖形學(xué)基礎(chǔ)。60年代中期美國、英國、法國的一些汽車、飛機(jī)制造業(yè)大公司對計(jì)算機(jī)圖形學(xué)開展大規(guī)模研究。60年代后期出現(xiàn)了存儲管式顯示器,可以進(jìn)行簡單交互。計(jì)算機(jī)圖形學(xué)特點(diǎn)和應(yīng)用特點(diǎn):.計(jì)算機(jī)產(chǎn)生的圖形有規(guī)律、光滑。它是按數(shù)學(xué)方法產(chǎn)生的,規(guī)矩整齊,有著像數(shù)學(xué)一樣的嚴(yán)格性。.計(jì)算機(jī)產(chǎn)生的圖形純凈美觀、無噪聲干擾。.通過計(jì)算機(jī)產(chǎn)生的圖形不僅能描繪客觀世界的各種對象,也能描繪純粹是想像的主觀世界中的各種對象。.交互式計(jì)算機(jī)圖形顯示可由用戶控制,產(chǎn)生的圖形可修改性強(qiáng),且速度快、差錯(cuò)少。應(yīng)用領(lǐng)域:.計(jì)算機(jī)輔助設(shè)計(jì)(CAD)和計(jì)算機(jī)輔助制造(CAM)計(jì)算機(jī)圖形學(xué)被用來進(jìn)行土建工程、機(jī)械結(jié)構(gòu)和產(chǎn)品的設(shè)計(jì),包括設(shè)計(jì)飛機(jī)、汽車、船舶的外形和發(fā)電廠、化工廠等的布局,也能夠?qū)﹄娮泳€路或電子器件進(jìn)行設(shè)計(jì)。.事務(wù)管理中交互式繪圖繪制事務(wù)管理中的各種圖形,如統(tǒng)計(jì)數(shù)據(jù)的二維及三維圖形、直方圖、線條圖、表示百分比的扇形圖等等,還可繪制工作進(jìn)程圖,庫存和生產(chǎn)進(jìn)程圖以及大量的其他圖形。所有這些都以簡明的形式呈現(xiàn)出數(shù)據(jù)的模型和趨勢以增加對復(fù)雜現(xiàn)象的理解并促進(jìn)決策的制定。.地理信息系統(tǒng)(GIS)地理信息系統(tǒng)是建立在地理圖形基礎(chǔ)上的信息管理系統(tǒng),是圖形技術(shù)、數(shù)據(jù)庫技術(shù)以及管理信息的結(jié)合。.辦公自動化和電子出版技術(shù)圖形顯示技術(shù)在辦公自動化和事務(wù)處理中的使用,有助于數(shù)據(jù)及其相互關(guān)系的有效表達(dá),因而有利于人們進(jìn)行正確的決策。利用交互式圖形顯示技術(shù)的支持可以進(jìn)行資料、文稿、書刊、手冊的編寫、修改。制圖、制表、分頁、排版。.計(jì)算機(jī)輔助教學(xué)(CAI)計(jì)算機(jī)輔助教學(xué)系統(tǒng)利用圖形顯示設(shè)備或電視終端,可以有聲有色生動地演示物理、化學(xué)、生物、外語等教學(xué)內(nèi)容,讓學(xué)生(用戶)使用人機(jī)交互手段,進(jìn)行學(xué)習(xí)和研究,繪圖或仿真操作,使整個(gè)教學(xué)過程宜觀形象,有利于加深理解所學(xué)知識。.過程控制在過程控制中,常常將計(jì)算機(jī)與現(xiàn)實(shí)世界中的其他設(shè)備連成一個(gè)系統(tǒng)。計(jì)算機(jī)圖形顯示設(shè)備常用來顯示系統(tǒng)中關(guān)鍵部位的狀態(tài),如煉油廠、發(fā)電廠的狀態(tài)顯示器可顯示出由傳感器送來的壓力、溫度、電壓、電流等數(shù)據(jù),從而使操作人員可對異常情況作出反應(yīng)。計(jì)算機(jī)圖形學(xué)當(dāng)前研究的課題.造型技術(shù)研究的是如何在計(jì)算機(jī)中構(gòu)造出二維、三維物件模型的基本方法和手段。.三維信息重建技術(shù)研究一些算法,使得計(jì)算機(jī)圖形系統(tǒng)能自動地將三視圖轉(zhuǎn)換成相應(yīng)的立體圖。.圖形數(shù)據(jù)庫研究如何以基本的圖形為數(shù)據(jù)項(xiàng)而建立起一個(gè)能快速查找各個(gè)圖形的圖形庫。.動態(tài)繪圖在交互式繪圖中,不僅可以在屏幕上對圖形進(jìn)行修改、刪除、編輯等,還可以進(jìn)行動態(tài)分析。.CG、CAD、CAM三者一體化計(jì)算機(jī)圖形學(xué)(CG)、計(jì)算機(jī)輔助設(shè)計(jì)(CAD)和計(jì)算機(jī)輔助制造(CAM)有機(jī)結(jié)合在一起,形成所謂一體化軟件。.應(yīng)用軟件開發(fā)環(huán)境的通用化和標(biāo)準(zhǔn)化用戶界面管理系統(tǒng)UIMS、窗口管理系統(tǒng)、網(wǎng)絡(luò)文件格式等,并使之通用化和標(biāo)準(zhǔn)化。.虛擬現(xiàn)實(shí)環(huán)境的生成(VirtualReality簡稱VR)利用計(jì)算機(jī)生成一種模擬環(huán)境(如飛機(jī)駕駛艙、操作現(xiàn)場等),通過多種傳感、設(shè)備使用戶“投入”到該環(huán)境中,實(shí)現(xiàn)用戶與該環(huán)境直接進(jìn)行自然交互的技術(shù)。.科學(xué)計(jì)算可視化通過對空間數(shù)據(jù)場構(gòu)造中間幾何圖素或用圖形繪制技術(shù)在屏幕上產(chǎn)生二維圖像。計(jì)算機(jī)圖形學(xué)生成和輸出的流水線再談矢量法和描點(diǎn)法矢量法-向量圖形-簡單圖形-計(jì)算機(jī)繪圖命令-向量圖描點(diǎn)法-點(diǎn)陣圖形-復(fù)雜圖形-文件存儲大小-位圖比較:幾條自由曲線構(gòu)成的圖形和一幅有炫彩動物的卡通圖形(1)點(diǎn)陣圖形點(diǎn)的信息;(2)向量圖形的尺寸變化;九、作業(yè)課后習(xí)題十、本章小結(jié)在本章中,對計(jì)算機(jī)圖形學(xué)的基本概念和研究內(nèi)容進(jìn)行了概述,對發(fā)展概況和應(yīng)用領(lǐng)域進(jìn)行了說明。第2章計(jì)算機(jī)圖形系統(tǒng)一、教學(xué)目標(biāo)通過對本章的學(xué)習(xí),要求熟悉計(jì)算機(jī)圖形系統(tǒng)的組成/各種圖形顯示器、圖形輸入/輸出設(shè)備。二、教學(xué)要求1、了解計(jì)算機(jī)圖形系統(tǒng)的組成;2、了解計(jì)算機(jī)圖形輸入/輸出設(shè)備的種類。三、教學(xué)內(nèi)容提要.計(jì)算機(jī)圖形系統(tǒng)的組成.計(jì)算機(jī)圖形顯示器.計(jì)算機(jī)圖形輸入設(shè)備計(jì)算機(jī)圖形輸出設(shè)備.圖形核心系統(tǒng)(GKS)簡介.通用圖形軟件簡介四、教學(xué)重點(diǎn)、難點(diǎn)及解決方法重點(diǎn)是質(zhì)悉計(jì)向機(jī)圖形系統(tǒng)的組成/各種圖形顯示器、圖形輸入/輸出設(shè)備。五、課時(shí)安排4學(xué)時(shí)六、教學(xué)設(shè)備課堂教學(xué)七、檢測教學(xué)目標(biāo)實(shí)現(xiàn)程度的具體措施和要求通過課堂提問的方式來檢測學(xué)生對基本概念的掌握程度。八、教學(xué)內(nèi)容2.1計(jì)算機(jī)圖形系統(tǒng)的組成圖形系統(tǒng)的結(jié)構(gòu)由硬件和軟件兩部分組成。二.圖形系統(tǒng)的基本功能及其硬件性能要求計(jì)算機(jī)圖形系統(tǒng)至少應(yīng)具有以下五個(gè)方面基本功能:.計(jì)算功能(1)形體設(shè)計(jì)和分析方法的程序庫,描述形體的圖形數(shù)據(jù)庫。(2)坐標(biāo)的平移、旋轉(zhuǎn)、投影、透視等幾何變換程序庫的數(shù)據(jù)庫。(3)曲線、曲面生成和圖形相互關(guān)系的檢測庫。.存儲功能在計(jì)算機(jī)內(nèi)存儲器和外存儲器中,應(yīng)能存放各種形體的幾何數(shù)據(jù)及形體之間相互關(guān)系,可實(shí)現(xiàn)對有關(guān)數(shù)據(jù)的實(shí)時(shí)檢索以及保存對圖形的刪除、增加、修改等信息。.輸入功能由圖形輸入設(shè)備將所設(shè)計(jì)的圖形形體的幾何參數(shù)(例如大小、位置等)和各種繪圖命令輸入到圖形系統(tǒng)中。.輸出功能圖形系統(tǒng)應(yīng)有文字、圖形、圖像信息輸出功能。在顯示屏幕上顯示設(shè)計(jì)過程當(dāng)前的狀態(tài)以及經(jīng)過圖形編輯后的結(jié)果。同時(shí)還能通過繪圖儀、打印機(jī)等設(shè)備實(shí)現(xiàn)硬拷貝輸出,以便長期保存。.對話功能可通過顯示器或其他人一機(jī)交互設(shè)備直接進(jìn)行人一機(jī)通信,對計(jì)算結(jié)果和圖形,利用定位、拾取等手段進(jìn)行修改,同時(shí)對設(shè)計(jì)者或操作員執(zhí)行的錯(cuò)誤給予必要的提示和幫助。為了實(shí)現(xiàn)以上功能,對圖形系統(tǒng)的硬件性能要求是:.處理速度圖形系統(tǒng)的處理速度既與圖形系統(tǒng)硬件有關(guān),也與圖形軟件的圖形處理算法有關(guān)。.存儲容量存儲容量包括三部分:內(nèi)存儲容量、顯存、外部存儲容量和顯示緩沖區(qū)容量。.處理精度處理精度主要是指圖形采集輸入質(zhì)量和顯示輸出質(zhì)量:這里主要指圖形分辨率、圖形色彩的顯示等。而且很大一部分與所采用的圖形處理軟件有關(guān)。三.圖形系統(tǒng)分類及硬件工作平臺要求.計(jì)算機(jī)圖形系統(tǒng)的分類根據(jù)其硬件配置和信息傳遞方式分為:(1)脫機(jī)繪圖系統(tǒng)將輸入圖形數(shù)據(jù)在主機(jī)內(nèi)進(jìn)行處理將圖形處理后的圖形數(shù)據(jù)送入中間介質(zhì),用磁盤或磁帶控制繪圖輸出機(jī)輸出圖形脫機(jī)繪圖系統(tǒng)是將圖形數(shù)據(jù)和圖形輸出分別進(jìn)行處理,避免計(jì)算機(jī)處于等待狀態(tài),加快計(jì)算機(jī)的工作效率。(2)聯(lián)機(jī)繪圖系統(tǒng)將輸入圖形數(shù)據(jù)在主機(jī)內(nèi)進(jìn)行處理計(jì)算機(jī)將圖形處理信息直接送給繪圖機(jī)輸出圖形,不需要中間介質(zhì)(磁盤或磁帶)傳遞繪圖信息,處理時(shí)間縮短了。但由于繪圖機(jī)是機(jī)械速度,這樣造成了計(jì)算機(jī)對繪圖機(jī)等待,降低了計(jì)算機(jī)工作效率。(3)交互式繪圖系統(tǒng)繪圖系統(tǒng)將處理結(jié)果輸出到圖形終端(圖形顯示器)或圖形工作站。用戶對所顯示圖形還可用定位、拾取和描繪等設(shè)備進(jìn)行編輯和標(biāo)注等。.計(jì)算機(jī)圖形系統(tǒng)的硬件工作平臺目前,計(jì)算機(jī)圖形系統(tǒng)的硬件平臺有如下兒種:(1).微型計(jì)算機(jī)(簡稱微機(jī))隨著微型計(jì)算機(jī)性能進(jìn)一步提高,用微型計(jì)算機(jī)實(shí)現(xiàn)三維形體的設(shè)計(jì)及顯示能力在不斷提高。⑵.工作站實(shí)際上是一類超級微型計(jì)算機(jī),該系統(tǒng)主要用于工程設(shè)計(jì),為研究、開發(fā)提供一整套軟硬件工作環(huán)境支持。工作站是具有高速的科學(xué)計(jì)算、豐富的圖形處理、靈活的窗口及網(wǎng)絡(luò)管理功能的交互式計(jì)算機(jī)系統(tǒng)。美國的SUN,SGLHP,DEC、IBM等公司均生產(chǎn)此類產(chǎn)品。.中、小型計(jì)算機(jī)一般在特定的部門、單位和應(yīng)用領(lǐng)域中采用此類環(huán)境。它是大型信息系統(tǒng)建立的重要環(huán)境,這種環(huán)境中信息和數(shù)據(jù)的處理量是很大的,要求機(jī)器有極高的處理速度和極大的存儲容量。.大型機(jī)以大型計(jì)算機(jī)為基礎(chǔ),具有容量龐大的存儲器和極強(qiáng)的計(jì)算功能,大量的顯示終端及高精度、大幅面的硬拷貝設(shè)備。還往往擁有自行開發(fā)的、功能齊全的應(yīng)用軟件系統(tǒng)。例如,美國第三大汽車公司(CHRYSLER汽車公司)就擁有龐大的計(jì)算機(jī)系統(tǒng)來進(jìn)行計(jì)算機(jī)輔助設(shè)計(jì)、實(shí)體造型、結(jié)構(gòu)分析、運(yùn)動模擬、工程和科學(xué)計(jì)算、項(xiàng)目管理、生產(chǎn)過程控制等。.計(jì)算機(jī)網(wǎng)絡(luò)計(jì)算機(jī)網(wǎng)絡(luò)是指將上述四類計(jì)算機(jī)平臺,或者其中某一類通過某種互聯(lián)技術(shù)彼此連接,按照某種通信協(xié)議進(jìn)行數(shù)據(jù)傳輸、數(shù)據(jù)共享、數(shù)據(jù)處理的多機(jī)工作環(huán)境。它的特點(diǎn)是多種計(jì)算機(jī)相連,可以充分發(fā)揮各個(gè)機(jī)器的性能和特點(diǎn),以達(dá)到很高的性能價(jià)格比。網(wǎng)絡(luò)圖形系統(tǒng)要考慮的關(guān)鍵問題是網(wǎng)絡(luò)服務(wù)器的性能,圖形數(shù)據(jù)的通信、傳輸、共享以及圖形資源的利用問題。2.2計(jì)算機(jī)圖形顯示器CRT單色顯示原理電子槍燈絲加熱陰極,陰極表面向外發(fā)射自由電子,控制柵控制自由電子是否向熒光屏發(fā)出,電子流在到達(dá)屏幕的途中,被加速、聚焦成很窄的電子束,由偏轉(zhuǎn)系統(tǒng)產(chǎn)生電子束的偏轉(zhuǎn)電場(或磁場),使電子束左右、上下偏轉(zhuǎn),在指定時(shí)刻在屏幕指定位置上產(chǎn)生亮點(diǎn)。余輝時(shí)間:電子束離開光點(diǎn)后光點(diǎn)保持的時(shí)間。屏幕刷新:熒光亮度隨著時(shí)間按指數(shù)衰減,整個(gè)畫面必須在每?秒鐘內(nèi)重復(fù)顯示許多次,人們才能看到一個(gè)穩(wěn)定而不閃爍的圖形,因此必須重復(fù)地使熒光質(zhì)發(fā)光,即驅(qū)使電子束迅速回到同一點(diǎn)。要保持一幅畫面的穩(wěn)定性,若余輝時(shí)間越短,則所需的屏幕輸刷新率越高。影響刷新率的最主要因素是顯示器的帶寬。熒光粉的質(zhì)量直接影響到CRT成像效果。電視(刷新率低,與其電路相關(guān))由于影片播放時(shí)畫面經(jīng)常切換,一?般采用短余輝的熒光粉。若采用長余輝的熒光粉,則會使上一幀圖像余輝保留時(shí)間過長而出現(xiàn)拖尾和花屏(馬賽克)現(xiàn)象電腦(刷新率高)由于電腦畫面一般較為穩(wěn)定,同一幀畫面停留時(shí)間較長,所以采用與電視相比較長余輝的熒光粉。如果一幀電腦畫面停留時(shí)間很長,那么需要保證一定的刷新頻率才能使該畫面不閃爍不變暗什么是灰度?灰度就是亮度,簡單說就是色彩的深淺程度,在黑白兩色中,灰度體現(xiàn)于黑與白的中間狀態(tài),也就是灰色。純黑(用0表示),純白(用15表示)假設(shè)總共有16種灰度也就是16種亮度隨箭頭越來越亮那么在彩色變換中同樣有灰度的概念,例如R、G、B三種原色,每種原色都有一個(gè)灰度值。若一種原色有16種灰度,那么該原色要占4位,256種灰度,那么該原色要占8位R、G、B三種原色若各有4位,則總共可顯示的彩色數(shù)目為212種,也即是16X16X16種兩點(diǎn)提示:(1)彩色圖片的色彩變換也叫灰度變換或者色階變換,R、G、B三種原色按任何比例增強(qiáng)再混合。(2)在ACDSee或PhotoShop等圖片工具欄中選擇灰度一項(xiàng),實(shí)際上就是將彩色圖像轉(zhuǎn)換為只有黑白兩色的灰度圖像,但和黑白圖像還是不同。一幅(彩色)圖片中,由于各部分的顏色細(xì)節(jié)不同因而導(dǎo)致各部分的灰度等級不同,這種現(xiàn)象我們稱之為“多級灰度”。多級灰度提高加速電壓后,電子束速度增加,穿透綠色熒光層,顯示綠色。電子束速度較低時(shí),轟擊熒光屏的能量只能使表層紅色熒光粉受激勵(lì),產(chǎn)生紅色亮點(diǎn)通過改變電子束電壓,就可調(diào)節(jié)電子束穿透熒光粉層的厚度,從而改變紅綠兩種發(fā)光亮度的比例,合成不同的顏色,因此,可顯示紅、橙、黃、綠四種顏色。).蔭罩式彩色CRT顯示的色彩要比穿透式彩色CRT寬廣得多。在熒光屏內(nèi)壁上分別由紅(R)、綠(G)、藍(lán)(B)三種顏色的熒光粉涂成百萬個(gè)熒光粉點(diǎn),按RGB順序分行交替排列成三角形狀且相距很近它們發(fā)出三種色彩時(shí)分辨不清三種原色,而形成一種顏色蔭罩的金屬板,板上按三角形狀鉆有40?50萬小圓孔。前罩式CRT管內(nèi)按三角形排列安裝三個(gè)電子槍,發(fā)射三條電子束,它們由一個(gè)共同偏轉(zhuǎn)系統(tǒng)控制三條電子束聚焦于蔭罩板上的小孔中且相距很近。蔭罩的作用是使三條電子束分離開來,分別轟擊到三種顏色的熒光點(diǎn)上,調(diào)節(jié)各個(gè)電子槍的電流強(qiáng)度,就可改變相應(yīng)顏色熒光點(diǎn)的亮度,即合成色中所占比例,達(dá)到改變成色的色彩圖形顯示系統(tǒng)的類型根據(jù)其電子束轟擊屏幕的方式和組成結(jié)構(gòu)可分為三種:隨機(jī)掃描式顯示系統(tǒng)、存儲管式顯示系統(tǒng)和光柵掃描式顯示系統(tǒng)。技術(shù)指標(biāo):分辨率的高低:現(xiàn)在一般在1024X1024以上顯示圖形的顏色的種數(shù):現(xiàn)在一般為真彩色32位.隨機(jī)掃描式顯示系統(tǒng)要顯示的圖形由計(jì)算機(jī)處理成為顯示器的顯示指令(或稱顯示文件)。圖形控制器取出緩沖存儲器或固定存儲器中的顯示指令,依次執(zhí)行。由管頭控制電路使電子束以按所要的亮度偏轉(zhuǎn)到指定位置,從而得到圖形。利用電子束在熒光屏上掃描的軌跡畫圖。顯示指令中的亮度、位移量等數(shù)字信息經(jīng)過線產(chǎn)生器的處理轉(zhuǎn)換為控制電子束產(chǎn)生偏轉(zhuǎn)和明暗的物理量,也就是電流和電壓。固定存儲器中則存放各種常用字符、數(shù)字等的顯示指令,顯示指令經(jīng)接口電路送到顯示器的緩沖存儲器。為了獲得穩(wěn)定的畫面,必須不斷地重復(fù)掃描顯示文件(即刷新),速度通常為每秒重復(fù)掃描25-50次,即每秒25?50幀左右優(yōu)點(diǎn):能實(shí)時(shí)地進(jìn)行數(shù)字一視頻轉(zhuǎn)換,實(shí)現(xiàn)動態(tài)顯示,易于修改,交互性好掃描速度快,線條質(zhì)量高,圖形清晰,圖線光滑。缺點(diǎn):不能產(chǎn)生多級灰度的真實(shí)感顯示,圖形的復(fù)雜程度受顯示器掃描速度的限制價(jià)格貴,目前很少使用。.存儲管式顯示系統(tǒng)利用顯示管本身來存儲信息技術(shù)(隨機(jī)掃描器使用了一個(gè)獨(dú)立的存儲器來存儲圖形信息)優(yōu)點(diǎn):圖形保持時(shí)間長,比較穩(wěn)定。電路結(jié)構(gòu)簡單,成本低。缺點(diǎn):顯示畫面速度慢,不適宜動態(tài)修改,交互性差。圖形復(fù)雜度受到限制。.光柵掃描式顯示系統(tǒng)隨機(jī)掃描式顯示器、存儲管式顯示器:畫線設(shè)備,在屏幕上顯示一條直線是從屏幕上一個(gè)可編地址點(diǎn)直接畫到另一個(gè)可編地址點(diǎn)。光柵掃描式顯示器:畫點(diǎn)設(shè)備,可以看作是一個(gè)點(diǎn)陣單元發(fā)生器,并可控制每個(gè)點(diǎn)陣單元亮度,可以生成多種灰度和顏色,色彩連續(xù)變化具有真實(shí)感的圖形。(1)光柵掃描式顯示系統(tǒng)組成把計(jì)算機(jī)送來的圖形(如畫線、畫多邊形、畫填充區(qū)域或?qū)懽址?基本畫圖命令掃描轉(zhuǎn)換成為相應(yīng)的點(diǎn)陣,即位圖(bitmap)點(diǎn)陣的每一點(diǎn)與屏幕像素一一對應(yīng),點(diǎn)陣中每個(gè)元素就是像素值,通常用1?12位二進(jìn)制數(shù)值來表示灰度或色彩。位映射(bitmapping)技術(shù):由若干位數(shù)據(jù)來對應(yīng)屏幕上一點(diǎn)的光柵圖形顯示技術(shù)將屏幕顯示圖形的映像(Image),即位圖放入顯示存儲器中。所以顯示存儲器又叫位存儲器,通常稱之為幀緩沖器(FrameBuffer)。為了使CRT屏幕上的圖形能持續(xù)地進(jìn)行顯示,顯示存儲器的內(nèi)容需要不斷地讀出并送到監(jiān)視器,使得畫面能以一定的頻率刷新。顯示存儲器的分頁處理:顯示存儲器中同時(shí)存放多幅畫面,這時(shí)存儲區(qū)劃分成若干頁,每一頁存放一幅位圖。物理屏幕當(dāng)前正在顯示的頁稱為可見頁(VisualPage),主機(jī)每次只能向一個(gè)頁進(jìn)行讀寫操作,這個(gè)頁就稱作活動頁(ActivePage)。存儲器的頁面可以比屏幕位圖大得多,這樣屏幕只能顯示畫面的一部分,通過上下左右移屏功能,用戶可以看到顯示存儲器中的整個(gè)畫面。(1)光柵掃描式顯示器組成用來定義像素的顏色。又稱為調(diào)色板。彩色表的目的是為了不使顯示存儲器容量增大,而能顯示更多的顏色,例如:顯示器要控制三種原色,即區(qū)(紅)、G(綠)、B(藍(lán)),為了使三種原色按不同的比例合成各種顏色,每種顏色要有不同的灰度,如果每個(gè)像素各個(gè)原色要16種灰度,于是每個(gè)原色要占4位,則每個(gè)像素要12位,于是顯示存儲器容量就要很大,彩色表可解決此問題。采用彩色表時(shí),顯示存儲器的像素值不再是直接送到監(jiān)視器中的顏色值,而僅是顏色的一個(gè)索引(ColorIndex),即彩色表的地址,用八位表示一個(gè)像素值,如編號69(01000101)為彩色表對應(yīng)地址從彩色表對應(yīng)地址項(xiàng)中讀出R、G、B三種顏色分量(即顏色號的定義值)然后送監(jiān)視器例如:彩色表的字長為12bit(R、G、B各4bit),這意味著最多可定義212=4096種不同顏色彩色表結(jié)構(gòu)為什么說彩色表的使用節(jié)省了存儲容量?彩色表的地址數(shù)目是由像素值的位長來決定的,也就是彩色素的多少,也即是?屏能顯示顏色數(shù)目的多少,例如像素值有8位,那么彩色表的地址=彩色素?cái)?shù)目=一屏能顯示的顏色數(shù)=256像素值的位長與彩色表的字長(也即是R/G/B三種原色的總位長)無關(guān),例如像素值的位長為8,R/G/B三種原色各有16(256)種灰度,那么彩色表的字長為12(24),該顯示系統(tǒng)所能顯示的顏色總數(shù)為4096(16777216)種,但是每屏最多能顯示的顏色數(shù)目只有28=256種。CRT控制器使電子束不斷地自上而下、自左面右進(jìn)行屏幕掃描,形成光柵(Raster),產(chǎn)生水平和垂直步信號送往CRT。2.3計(jì)算機(jī)圖形輸入/輸出設(shè)備一.鍵盤二.鼠標(biāo)機(jī)械式鼠標(biāo)器二.光電式鼠標(biāo)器三.光機(jī)式鼠標(biāo)器一種檢測裝置功能一般有兩種:拾取和跟蹤使用時(shí)要有相應(yīng)的軟件配合。數(shù)字化儀數(shù)字化儀時(shí)常用來摘取放在它上面的工程圖上的大量點(diǎn),經(jīng)數(shù)字化后存儲起來,以此作為圖形輸入一種手段。工作原理:數(shù)字化儀平板實(shí)際上就是一個(gè)XY直角坐標(biāo)系,它上面的任何一點(diǎn)都對應(yīng)于一個(gè)坐標(biāo)值(x,y),當(dāng)游標(biāo)器移動到平板上某一位置時(shí),按一下游標(biāo)器上的開關(guān),便可獲得這一位置的坐標(biāo)值,并自動地把這個(gè)坐標(biāo)值(x,y)送到計(jì)算機(jī)內(nèi)。只要將畫有此曲線的圖紙貼在數(shù)字化儀的平板上,并移動游標(biāo)器到各個(gè)點(diǎn)Ai(i=l,2,…“,每次按下游標(biāo)器上的開關(guān),便把這些點(diǎn)的坐標(biāo)(xi,yi)自動地送到計(jì)算機(jī)內(nèi)圖形輸入板則更多用于交互設(shè)計(jì),使用時(shí)大多劃出一個(gè)臺板圖形區(qū),其余部分放置菜單,稱為菜單區(qū)。圖形區(qū)菜單區(qū)臺板圖形區(qū)與顯示屏之間存在著?種映射關(guān)系圖形輸入板的使用方式有三種:(1)圖形變成數(shù)字化信息。(2)拾取臺板菜單區(qū)中的菜單項(xiàng),即取出拾取點(diǎn)的坐標(biāo),算出該菜單項(xiàng)的代碼并轉(zhuǎn)入相應(yīng)程序運(yùn)行。(3)選擇輸出坐標(biāo)數(shù)據(jù)的方式,共有四種方式。第一種為點(diǎn)方式,即先拾取一個(gè)點(diǎn),接著輸出該點(diǎn)的坐標(biāo);第二種稱連續(xù)方式,即隨著定位工具的移動,連續(xù)輸出點(diǎn)的坐標(biāo);第三種稱開關(guān)連續(xù)方式,即當(dāng)定位工具移動且同時(shí)按下開關(guān)時(shí)才能連續(xù)輸出點(diǎn)的坐標(biāo);第四種稱增量方式,這時(shí)拾取點(diǎn)的坐標(biāo)以相對于上次拾取點(diǎn)的增量坐標(biāo)形式輸出。以上四種方式可通過選擇圖形輸入板匕的有關(guān)按鈕來決定。圖形掃描儀直接把圖形(工程圖紙)和圖像(如照片、廣告畫)掃描輸入到計(jì)算機(jī)中,以像素信息進(jìn)行存儲表示的設(shè)備。按所支持的顏色分:單色掃描儀和彩色掃描儀按所采用的固態(tài)器件分:電荷耦合器件(CCD)掃描儀、MOS電路掃描儀和緊貼型掃描儀等;按掃描寬度和操作方式分:大型掃描儀、臺式掃描儀和手動式掃描儀.圖形掃描基本過程(CCD掃描儀)掃描光源通過待掃描材料再經(jīng)一組鏡面反射到CCD由CCD轉(zhuǎn)換產(chǎn)生圖像數(shù)據(jù),然后,傳輸給計(jì)算機(jī)主機(jī)經(jīng)過適當(dāng)?shù)能浖幚恚詧D像數(shù)據(jù)文件的形式存儲或使用。分辨率:在原稿的單位長度(英寸)上取樣的點(diǎn)數(shù),單位是dpi(dotperinch)一般在300dpi-1000dpi掃描儀的性能指標(biāo)支持顏色、灰度等級:目前有4位、8位和22位面顏色、灰度等級的掃描儀。掃描圖形分辨率越高,所需的儲空間就越大。掃描儀支持的顏色、灰度層次越多,圖像的數(shù)字化表示就越準(zhǔn)確,但同時(shí)意味著表示一個(gè)像素的位數(shù)增加了,因而也增加了存儲空間。顯示器、繪圖儀、打印機(jī)—,繪圖儀把由計(jì)算機(jī)生成的圖形輸出到圖紙(或其它介質(zhì))上的硬拷貝設(shè)備。筆繪式噴墨式靜電式矢量型設(shè)備,繪圖筆相對紙作隨機(jī)移動。在筆式繪圖機(jī)上,一個(gè)電脈沖通過驅(qū)動電機(jī)與傳動機(jī)構(gòu)使畫筆移動的距離稱為步距(或稱脈沖當(dāng)量)步距減小,畫出的圖就越精細(xì)。.筆式繪圖儀.平臺式繪圖機(jī)圖紙靜止不動導(dǎo)軌做X方向運(yùn)動筆架做Y方向運(yùn)動機(jī)械傳動.滾筒式繪圖機(jī)繪圖紙卷在滾筒上,筆和紙都是運(yùn)動的。.平面電機(jī)式繪圖機(jī)采用平面電機(jī)驅(qū)動,可以取消導(dǎo)軌、橫梁及傳動機(jī)構(gòu)。.小型繪圖機(jī)結(jié)構(gòu)簡單原理大致與平臺式繪圖機(jī)相同筆式繪圖機(jī)的主要技術(shù)指標(biāo)繪圖速度步距繪圖精度功能包括繪圖幅面大小(AO,Al,A3……等),畫筆數(shù)量,以及其他輔助功能(如插補(bǔ)功能、由線擬合功能等)二、噴墨式繪圖儀噴墨《置多加情況是安裝在類似打印機(jī)的機(jī)頭上,紙則繞在滾筒上并使之快速旋轉(zhuǎn),噴墨頭則在滾筒上緩慢運(yùn)動,并且把青色、品紅、黃色,有時(shí)是黑色墨噴到紙上。三、靜電繪圖儀繪圖分兩步:(1)用靜電構(gòu)造一個(gè)不可見潛影(2)噴上調(diào)色劑著色處理進(jìn)行顯影針點(diǎn)式打印機(jī)激光打印機(jī)細(xì)針與色帶作為打印裝置利用靜電作用利用噴射墨計(jì)作為打印裝置2.4圖形核心系統(tǒng)(GKS)簡介GraphicsKernelSystem,一種已經(jīng)被ISO接受的國際圖形標(biāo)準(zhǔn).GKS的功能提供了各種物理的圖形輸入、輸出設(shè)備(圖形顯示器、繪圖機(jī)。圖形輸入板等)和應(yīng)用軟件之間的接口。提供了與各種高級語言的接口。GKS的基本概念.工作站由一個(gè)操作員操縱使用的?組圖形輸入/輸出設(shè)備是一個(gè)邏輯上的概念一個(gè)工作站允許有多個(gè)輸入設(shè)備,但只能有一個(gè)輸出設(shè)備。典型的工作站由一個(gè)鍵盤、一個(gè)鼠標(biāo)器和一臺圖形顯示器組成。分為輸出型、輸入型、輸入/輸出型(交互式工作站)、元文件輸出工作站、元文件輸入工作站和圖段存儲器工作站六種類型。.坐標(biāo)與坐標(biāo)變換GKS有三種不同的坐標(biāo)系供應(yīng)用程序使用的實(shí)際世界坐標(biāo)系統(tǒng)(WorldCoordinateSystem,簡稱WC)各工作站物理設(shè)備使用的設(shè)備坐標(biāo)系(DeviceCoordinateSystem,簡稱DC)GKS內(nèi)部使用的規(guī)范設(shè)備坐標(biāo)系(NormalizedDeviceCoordinate;簡稱NDC)三個(gè)坐標(biāo)系都是二維坐標(biāo)系.GKS圖形輸出原語GKS可以輸出一些最基本的兒何元素如線段、標(biāo)記、填充封閉區(qū)域、文字、符號等。通常二維物體的形狀及其相應(yīng)的畫面都可以由這些基本的圖形元素來構(gòu)成。應(yīng)用程序是通過調(diào)用GKS的輸出圖元功能子程序的方式輸出圖元的。GKS的六種圖形輸出原語(見書P41)GKS不僅使用必要的坐標(biāo)數(shù)據(jù)來規(guī)定上述各種圖元的位置、大小及形狀、而且可以通過各種屬性來指出其外貌,從而使應(yīng)用程序能很方便地生成符合實(shí)際使用要求的多姿多彩的圖形。輸出圖元屬性(見書P42).GKS圖形輸入設(shè)備六種不同的邏輯輸入設(shè)備:定位設(shè)備筆畫設(shè)備揀取設(shè)備選擇設(shè)備數(shù)值輸入設(shè)備字符串輸入設(shè)備.5通用圖形軟件筒介一、通用圖形軟件的分類圖形軟件的內(nèi)容非常豐富,它包括二維圖形的生成、圖形變換、幾何交切、裁剪,平面圖形的布爾運(yùn)算,三維圖形的生成、變換、隱藏線的消除,三維剪裁,立體造型等。圖形程序包:PLOT-10,CALCOMP等繪制軟件基本圖形資源軟件:如GKS及PHIGS標(biāo)準(zhǔn)的軟件包,還有SGI公司研發(fā)的圖形標(biāo)準(zhǔn)庫OpenGLo以及二維、三維交互圖形軟件,幾何造型軟件,動畫技術(shù)軟件等CADAM(Computer-graphicsAugmentedDesignAndManufacture,計(jì)算機(jī)圖形增廣設(shè)計(jì)和制造)CATIA(Computer-graphicsAidedThree-demensionalInteractiveApplication,計(jì)算機(jī)輔助三維交互應(yīng)用)CAEDS(ComputeAidedEngineeringDesignSystems,計(jì)算機(jī)輔助工程設(shè)計(jì)系統(tǒng))GKS(GraphicsKernelSystem,圖形核心系統(tǒng))CBDS2(CircuitBoardDesignSystem2,電路板設(shè)計(jì)系統(tǒng)2)PADL(PatandAssemblyDescriptiionLanguage,零件和部件描述語言)九、作業(yè)課后習(xí)題十、本章小結(jié)在本章中,介紹了計(jì)算機(jī)圖形系統(tǒng)的組成,各種圖形顯示器的種類以及輸入輸出設(shè)備等。第3章c語言圖形程序設(shè)計(jì)基礎(chǔ)一、教學(xué)目標(biāo)通過對本章的學(xué)習(xí),要求熟悉C語言圖形程序設(shè)計(jì)的基礎(chǔ)知識:屏幕顏色的設(shè)置、圖形顏色設(shè)置、線的特性設(shè)定和填充。二、教學(xué)要求1、掌握C語言的圖形顏色設(shè)置;2、了解線的特性設(shè)定和填充。三、教學(xué)內(nèi)容提要1屏幕設(shè)置圖形顏色設(shè)置線的特性設(shè)定和填充圖形模式下文本處理5圖形存取處理常用畫圖函數(shù)簡介繪圖程序?qū)嵗鼵++語言環(huán)境下繪圖四、教學(xué)重點(diǎn)、難點(diǎn)及解決方法重點(diǎn)是了解c語言圖形程序設(shè)計(jì)的基礎(chǔ),包括圖形顏色設(shè)置,線的特性設(shè)定和填充,圖形模式下文本處理等。五、課時(shí)安排8學(xué)時(shí)六、教學(xué)設(shè)備課堂教學(xué)七、檢測教學(xué)目標(biāo)實(shí)現(xiàn)程度的具體措施和要求通過課堂提問的方式來檢測學(xué)生對基本概念的掌握程度。八、教學(xué)內(nèi)容1屏幕設(shè)置一、屏幕顯示方式與坐標(biāo)系.文本方式與字符坐標(biāo)系在屏幕上只能顯示字符的方式稱為文本方式。在文本方式下,屏幕上可以顯示的最小單位是字符。為了能在指定位置顯示每個(gè)字符,C語言提供了字符坐標(biāo)系。左上角為坐標(biāo)原點(diǎn)(1,1)水平方向(x軸)分為若干列垂直方向(y軸)分為若干行第三章C語言圖形程序設(shè)計(jì)基礎(chǔ)如:(8,20)表示字符位于屏幕第8行第20列TurboC支持以下6種不同的顯示方式:BW40黑白25X40(25行,40列)C40彩色25X40BW80黑白25X80C80彩色25X80MONO單色25X80C4350彩色43X80(EGA),50X80(VG)顯示方式不同,所顯示的字符的列數(shù)和行數(shù)也不一樣,顏色也有區(qū)別,屏幕上所顯示的字符數(shù)量也不一樣。.圖形方式與點(diǎn)坐標(biāo)在屏幕上顯示的圖形稱圖形方式。屏幕是由像素點(diǎn)組成的,其像素點(diǎn)多少決定了屏幕的分辨率。分辨率越高,顯示圖形越細(xì)致,質(zhì)量越好。在圖形方式下,屏幕上每個(gè)像素的顯示位置用點(diǎn)坐標(biāo)來描述。點(diǎn)坐標(biāo)系左上角為坐標(biāo)原點(diǎn)(0,0)垂直方向?yàn)閥軸,自上向下水平方向?yàn)閤軸,自左向右分辨率不同,水平方向和垂直方向的點(diǎn)數(shù)也不一樣,即其maxx,maxy數(shù)值也不同。在TurboC中,坐標(biāo)數(shù)據(jù)可以用兩種形式給出:一種是絕對坐標(biāo);另一種是相對坐標(biāo)。絕對坐標(biāo)的參考點(diǎn)是坐標(biāo)的原點(diǎn)(0,0),x和y只能取規(guī)定范圍內(nèi)的正整數(shù)。相對坐標(biāo)是相對“當(dāng)前點(diǎn)”的坐標(biāo),所以其坐標(biāo)的參考點(diǎn)不是坐標(biāo)系的原點(diǎn),而是當(dāng)前點(diǎn)。在相對坐標(biāo)中,x和y的取值是相對于當(dāng)前點(diǎn)在x方向和y方向上的增量,x和y可以是正整數(shù),也可以是負(fù)整數(shù)。點(diǎn)坐標(biāo)系坐標(biāo)值的范圍決定于所使用適配器/顯示分辨率。二、圖形驅(qū)動程序與圖形模式.圖形驅(qū)動程序支持不同圖形適配器的一組程序由于圖形顯示器的種類繁多,其控制方式也各有差異,所以要顯示圖形就需先裝入相應(yīng)的圖形驅(qū)動程序。TurboC提供了幾種圖形驅(qū)動程序可支持的圖形適配器。下表列出驅(qū)動程序其相應(yīng)的符號常量和規(guī)定值。.圖形模式每種圖形顯示器有不同的圖形顯示模式由于每種圖形顯示器各有幾種不同的圖形顯示模式,因此,要顯示圖形就必須確定所用的顯示模式,也就是說,要顯示圖形,不但要先裝入相應(yīng)驅(qū)動程序,而且還要決定所用的顯示模式。不同的圖形驅(qū)動程序有不同的圖形模式;即使在同一圖形驅(qū)動程序下,也可能會有幾種圖形模式。TurboC中圖形函數(shù)均在頭文件“graphics』”中定義,所以,凡是在程序中要調(diào)用這些圖形函數(shù),都必須在程序文件的開頭寫上文件包含命令:#include<graphics.h>.圖形系統(tǒng)初始化.問題的提出一般缺省情況下,屏幕為80列25行的文本方式。在文本方式下,所有的圖形函數(shù)均不能操作,因此在使用圖形函數(shù)繪圖之前,必須將屏幕顯示適配器設(shè)置為一種圖形模式,這就是圖形初始化過程。圖形系統(tǒng)初始化苜先要調(diào)用initgraphO函數(shù),它通過從磁盤上裝入一個(gè)圖形驅(qū)動程序,來初始化圖形化系統(tǒng),并將系統(tǒng)設(shè)置為圖形模式。.初始化函數(shù)initgraph()函數(shù)格式為:voidfarinitgraph(int*gdriver;int*gmode,char*path);①gdriver:是一個(gè)整型值,用來指定要裝入的圖形驅(qū)動程序,該值在頭文件graphics,h中定義,如p51表3.1所示。②gmode:是一個(gè)整型值,用來設(shè)置圖形顯示模式。圖形顯示模式?jīng)Q定了顯示的分辨率,可同時(shí)顯示的顏色的多少,調(diào)色板的設(shè)置方式等,幾種不同的圖形顯示模式如p53表3.2所示。③path:是一個(gè)字符串,用來指明圖形驅(qū)動程序所在路徑。如果驅(qū)動程序就在用戶當(dāng)前目錄下,則該參數(shù)可以空字符串,否則應(yīng)給出具體路徑名。一般情況下,TurboC安裝在C盤的TC目錄中,則該路徑為:C:\TC,如果寫在參數(shù)中則為"C:\\TC"。注意:前兩個(gè)參數(shù)實(shí)際上是整型指針,調(diào)用時(shí)應(yīng)加上地址運(yùn)算符。對far關(guān)鍵字的解釋:far并非C語言的標(biāo)準(zhǔn)關(guān)鍵字,主要是遠(yuǎn)程鏈接的作用,可以將其視為遠(yuǎn)指針函數(shù),以內(nèi)存管理是段式管理為例,沒有far這個(gè)關(guān)鍵字時(shí),內(nèi)存地址僅是段內(nèi)跳轉(zhuǎn),有far這個(gè)關(guān)鍵字時(shí)內(nèi)存地址是段間跳轉(zhuǎn)。幾個(gè)頭文件graphics.hstdlib.hconio.hstdio.h(3)初始化方式①已知顯示器類型的圖形系統(tǒng)初始化已知所用圖形顯示器的種類和要使用的圖形模式,初始化圖形系統(tǒng)可如下面程序所示:例3.1#include"graphics.h〃main(){intgdriver,gmode;gdriver=CGA;/*設(shè)置驅(qū)動程序?yàn)镃GA*/gmode=CGACO; /*選用CGA圖形模式*/initgraph(&gdriver,&gmode,"c:\\TC");/*初始化圖形系統(tǒng)*/bar3d(10,20,50,80,0,0);/*畫一實(shí)心長方形*/getch(); /*等待按一鍵結(jié)束*/closegraph(); /*關(guān)閉圖形系統(tǒng),回到文本方式*/}此處也可用整型常數(shù)代替符號常量gdriver=l;gmode=0;②不知顯示器類型的圖形初始化。TurboC提供了一個(gè)對圖形顯示器硬件測試的函數(shù)detectgraph()。它的格式為:voidfardetectgraph(int*gdriver,int*gmode);該函數(shù)在計(jì)算機(jī)有圖形適配器的情況下,確定圖形適配器的類型,若系統(tǒng)有圖形適配器,則返回適合于適配器的圖形驅(qū)動程序的代碼,用gdriver指向的整型量表示,該函數(shù)把gmode所指的變量設(shè)置為適配器所能支持的最高分辨率。若系統(tǒng)無圖形適配器,則gdriver所指變量為-2。例3.2#include"stdio.h"#includeaconio.Sinclude“stdlib.h"#include"graphics,h”main(){intgdriver,gmode;detectgraph(&gdriver,&gmode);/*測試結(jié)果存放于gdriver,gmode111*/if(gdriver<0){printf(,zthereisnotgraphicsdisplayer\n*);exit(1);} /*無圖形顯示模式時(shí),顯示信息,停止程序*/標(biāo)準(zhǔn)的輸入輸出函數(shù)調(diào)用DOS控制臺1/0子程序的各個(gè)函數(shù)說明一些常用的子程序:轉(zhuǎn)換子程序,搜索、排序子程序可以把上述對圖形顯示器的檢測和初始化工作放在一起來自動完成,即規(guī)定gdriver=DETECT,則initgraph()函數(shù)會自動按照系統(tǒng)所配置的圖形顯示器來確定驅(qū)動程序,并把圖形模式設(shè)置為檢測到驅(qū)動程序的最高分辨率,實(shí)現(xiàn)圖形系統(tǒng)初始化。③自動初始化圖形系統(tǒng)printf("detectgraphicsdriveris#%d,modeis#%d\n”,gdriver,gmode);/*顯示硬件測試結(jié)果*/getch(); /*等待按一鍵*/initgraph(&gdriver,&gmode,*c:\\tc*); /*初始化*/bar3d(10,20,50,80,0,0); /*畫實(shí)心長方形*/getch();closegraph(); /*關(guān)閉圖形系統(tǒng),返回文本模式*/return(0);}例3.3include"graphics.h"include"conio.h"main(){intgdriver=DETECT,gmode;/*自啟動搜尋顯示器類型和顯示模式*/initgraph(&gdriver,&gmode,"c:\\tc"); /*初始化*/bar3d(10,20,50,80,0,0);/*畫實(shí)心長方形*/getch(); /*等待按一-鍵*/closegraph();/*關(guān)閉圖形系統(tǒng),返回文本模式*/return(0);}.圖形系統(tǒng)的關(guān)閉從上述幾個(gè)例子已看到在圖形編程中均先用函數(shù)initgraph。對圖形系統(tǒng)進(jìn)行初始化,即啟動圖形系統(tǒng),進(jìn)人繪圖狀態(tài),而在程序結(jié)束前都用函數(shù)closegraph()關(guān)閉圖形系統(tǒng),以釋放圖形驅(qū)動程序所占用的內(nèi)存空間,使系統(tǒng)回到文本文件。關(guān)閉圖形系統(tǒng)函數(shù)格式為:voidfarclosegraph();所有有關(guān)圖形顯示箱序一定是在initgraph。和closegraph。之間。從initgraph。后,顯示器就進(jìn)入圖形方式,而從closegraph。后,顯示器就退出圖形方式回到文本顯示方式。.圖形模式的控制為了對圖形系統(tǒng)模式進(jìn)行控制,即從圖形模式轉(zhuǎn)換成文本模式,或從文本模式轉(zhuǎn)換成圖形模式,或設(shè)置驅(qū)動器有效模式,或讀取當(dāng)前圖形模式和范圍,TurboC都提供了相關(guān)函數(shù):(1)從圖形模式轉(zhuǎn)換成文本模式(2)從文本模式轉(zhuǎn)換成圖形模式(3)設(shè)置驅(qū)動器有效模式(4)讀取當(dāng)前圖形模式和范圍(1)返回當(dāng)前圖形模式值intfargetgraphmode(void);函數(shù)返回當(dāng)前圖形模式,其返回值如表p513.2所示。(2)恢復(fù)屏幕在圖形初始化前模式voidfarrestorecrtmode(void);函數(shù)使initgraph。函數(shù)所選定圖形模式關(guān)閉,返回到調(diào)用initgraph。前狀態(tài)。(3)設(shè)置系統(tǒng)圖形模式并清屏幕voidfarsetgraphmode(intgmode);函數(shù)把當(dāng)前圖形模式設(shè)置為gmode所指定的模式。(4)獲取圖形驅(qū)動器可使用的模式范圍voidfargetmoderange(intdriver,int*lomode,int*himode);該函數(shù)確定由driver所指定圖形驅(qū)動器能夠支持的最低和最高模式,并且把這些值放在由lomode和himode所指向變量中。通過調(diào)用此函數(shù),可實(shí)現(xiàn)使顯示器暫時(shí)離開圖形模式進(jìn)入文本模式,進(jìn)行文本輸出,然后不經(jīng)過initgraph再返回圖形模式。例3.4#include"graphics.h"#include"stdio.h"#include“conio.h"main(){intgdriver,gmode,lo,hi;gdriver=CGA; /*設(shè)置CGA的圖形驅(qū)動程序*/getmoderange(CGA,&lo,&hi);/*獲得CGA的圖形模式范圍*/printf("CGAsurpportingmodesrangefrom%dto%d.\dn",lo,hi);/*顯示CGA顯示模式范圍*/initgraph(&gdriver,&lo,nc:\\tc");/*初始化CGACO*/bar3d(100,30,130,150,0,0);/*畫一實(shí)心方塊*/getch();gmode=getgraphmode();/*獲得現(xiàn)行圖形模式*/restorecrtmode();/*返回圖形初始化前的現(xiàn)實(shí)模式*/printf(nNowintextmode,pressanykeybacktographicsmode.\nH);getch();setgraphmode(gmode);/*再回到圖形模式*/rectangle(50,30,100,130);/*畫一長方形*/getch();closegraph(); /*關(guān)閉圖形系統(tǒng)*/return(0);}四、圖形坐標(biāo)的設(shè)置即運(yùn)用光標(biāo)定點(diǎn),確定坐標(biāo)位置。可用TurboC提供的函數(shù)來設(shè)定坐標(biāo)(定點(diǎn)),讀取當(dāng)前光標(biāo)的位置以及x、y軸的最大值。.定點(diǎn)(1)把當(dāng)前光標(biāo)移到所需的位置(即x、y點(diǎn))voidfarmoveto(intx,inty);此函數(shù)把當(dāng)前窗口中的當(dāng)前光標(biāo)位置(cp)移到所需的(x、y)位置(不是畫)。(2)以增量方式移動當(dāng)前光標(biāo)voidfarmoverel(intdelaxjntdelay);此函數(shù)把光標(biāo)從當(dāng)前位置(cp)開始,在x,y方向移動,移動距離分別為delax,delayo例如:若當(dāng)前光標(biāo)位置在(10,10)處,執(zhí)行下列語句后即移到(20,30)的位置上。moverel(10,20);.讀取當(dāng)前光標(biāo)位置intfargetx(void);此函數(shù)返回光標(biāo)在X軸位置。intfargety(void);此函數(shù)返回光標(biāo)在y軸的位置。例3.6畫一“王”字.讀取x,y軸的最大值”intfargetmaxx(void);此函數(shù)返回X軸的最大值(最大橫坐標(biāo))。intfargetmaxy(void);此函數(shù)返回y軸的最大值(最大縱坐標(biāo))。例如:下列語句顯示光標(biāo)當(dāng)前位置的x、y值:printf("cp'sloc:%d%d",getx(),gety());3.2圖形顏色設(shè)置在畫圖時(shí),往往要求配置一定的顏色以使圖形光彩奪目。顏色分為前景色和背景色。前景色是指構(gòu)成字符和圖形點(diǎn)的顏色;而背景色是指整個(gè)顯示屏顏色。TurboC提供了多個(gè)顏色控制函數(shù)用來設(shè)置前景、背景、改變調(diào)色板等。一、顏色的設(shè)置畫圖時(shí),用戶可以對當(dāng)前的背景顏色和作圖顏色進(jìn)行設(shè)置。.設(shè)置當(dāng)前背景顏色voidfarsetbkcolor(intcolor);將背景色設(shè)置成color所指定的顏色值。參數(shù)color可以用名字,也可以用數(shù)字,它們對應(yīng)關(guān)系在graphics心中定義,表3.3(見書P60)列出背景色名稱和數(shù)值的對應(yīng)關(guān)系。缺省時(shí),默認(rèn)值為0,即黑色。.設(shè)置當(dāng)前畫圖顏色voidfarsetcolor(intcolor);該函數(shù)把當(dāng)前畫圖顏色設(shè)置為color所指定顏色,即畫筆的顏色。實(shí)際對應(yīng)的顏色和調(diào)色板有關(guān),缺省時(shí),默認(rèn)值是白色。例3.11強(qiáng)背景顏色設(shè)置為黃色,畫筆設(shè)置為紅色,畫一圓。#include"graphicsb”#include"conio.h"voidmain(){intgdriver,gmode;gdriver=VGA;gmode=EGAHI;initgraph(&gdriver,&gmode,nM);setbkcolor(YELLOW);/*設(shè)置背景色為黃色*/setcolor(RED);/*設(shè)置畫筆為紅色*/circle(120,100,50); /*畫一圓*/getch();closegraph();}這是允許的二、調(diào)色板調(diào)色板:是設(shè)置畫顏筆的組合設(shè)置當(dāng)前畫筆色與調(diào)色板有關(guān),對應(yīng)一個(gè)顯示設(shè)備可能有多個(gè)調(diào)色板,這意味著盡管硬件能夠顯示多種顏色,但由于同一時(shí)間內(nèi)只能使用一個(gè)調(diào)色板,所以在同一時(shí)間內(nèi)只有顯示設(shè)備可能顯示總顏色的一個(gè)子集可以被顯示出來,因?yàn)檎{(diào)色板內(nèi)顏色的數(shù)只受到可用視頻內(nèi)存的限制。根據(jù)顏色控制方法不同,可以把支持的顏色屏幕劃分為兩類:一類是CGA,包括CGAHI、MCGAMED,MCGAHkATT400MED、ATT400HI;另一類是EGA,包括EGA和VGA適配器。1、CGA調(diào)色板CGA類屏幕有兩種分辨率:低分辨率和高分辨率。(1)低分辨率低分辨率方式顯示320X200個(gè)像素點(diǎn),4種顏色;第三章C語言圖形程序設(shè)計(jì)基礎(chǔ)在CGA低分辨率方式下,可以顯示4種顏色,這4種顏色由選擇的調(diào)色板決定。在CGA方式下可以使用的調(diào)色板有CGAC0、CGAC1、CGAC2和CGAC3。每種CGA調(diào)色板均含有4種不同顏色,調(diào)色板不同所包含的顏色也不一樣。每種調(diào)色板只能使用與它列在同一行中的顏色,其編號依次為0、1、2、3,也可以使用符號常量。表中調(diào)色板號是圖形方式而顏色0是背景色,顏色1、2、3是像素點(diǎn)顏色。調(diào)色板在initgraph函數(shù)中設(shè)置,顏色用setcolor函數(shù)設(shè)置。背景色默認(rèn)是黑色如果setcolor(a),a>=3,那么將顯示值最大的那種顏色,例如CGAC0,將顯示黃色(2)高分辨率高分辨率方式顯示640X200個(gè)像素點(diǎn),只有兩種顏色。黑色背景和彩色前景。由于CGA本身原因,背景色就是硬件所認(rèn)為的背景色,可用setbkcolor參照課本P60表3.3設(shè)置,前景色(即畫筆顏色)始終是青色。例3.12在高分辨率下畫一青色圓。#include"graphics.h"#include"conio.h"voidmain()(intgdriver=CGA,gmode=CGAHI;initgraph(&gdriver,&gmode,cleardevice();setbkcolor(3);circle(160,100,50);circled60,100,25);getch();closegraph();)程序執(zhí)行后,在青色屏幕上顯示兩個(gè)白色圓圖形。2、EGA調(diào)色板對EGA來說,總共可以有64種顏色,但只有一個(gè)調(diào)色板,這個(gè)調(diào)色板只有16項(xiàng),可同時(shí)顯示16種顏色。默認(rèn)的這16種顏色可參看P60表3.3。表3.5(見書P63)的顏色不準(zhǔn)確,是隨機(jī)選取的,不作為參考。3、改變調(diào)色板的一種顏色voidfarsetpalette(intoldcolorjntnewcolor);此函應(yīng)改變屏幕系統(tǒng)所顯示顏色。它把調(diào)色板oldcolor變?yōu)閚ewcoloro.對于CGA模式,只有背景色能改變,而背景色總是取。ldcolor=0例如,下列語句可把背景色改成綠色:setpalette(O,GREEN);TurboC中原像不支端對該函數(shù)的執(zhí)行⑵.對于EGA模式可以用setpalette()函數(shù)將某一種顏色設(shè)置為16 種不同顏色中的一種。oldcolor是表3.3中任一 顏色,而newcolor是表3.5中前7種顏色。例如:setpalette(BLUE,EGA-GREEN);或setpalette(l,2);將屏幕上的藍(lán)色(BLUE)均變?yōu)榫G色(EGA-GREEN)三、獲取顏色信息.讀取當(dāng)前背景顏色intfargetbkcolor(void);該函數(shù)返回當(dāng)前背景顏色,其背景顏色值如表3.3所示。例如:下列語句顯示當(dāng)前背景顏色:printf("backgroundcoloris%d",getbkcolor());.讀取當(dāng)前畫圖顏色intfargetcolor(void);該函數(shù)返問當(dāng)前畫筆顏色。例如,在CGAC2圖形模式下,調(diào)色板包含四種顏色:0為背景色,1為綠色,2為紅色,3為棕色。如果getcobK)函數(shù)的返回值為1,則當(dāng)前畫筆色為綠色。.讀取最高可用顏色數(shù)intfargetmaxcolor(void);該函數(shù)返回當(dāng)前屏幕模式下最大有效顏色值。在EGA模式下,getmaxcoloK)函數(shù)返回最大值為15,這表明用setcolor()函數(shù)值在0—15有效;在CGA低分辨率模式中,getmaxcolorQ函數(shù)返回最大值為3,這表明用setcolorQ函數(shù)值在0—3有效;而在CGAHI模式中,返回值為1,因?yàn)楫嫻P始終是青色。.在點(diǎn)(x,y)處畫一規(guī)定顏色點(diǎn)voidfarputpixel(intx,inty,intcolor);把color所指定的顏色寫到(x,y)處的像素上。.讀取點(diǎn)(x,y)的顏色intfargetpixel(intx,inty);此函數(shù)返回指定點(diǎn)X,y位置上的像素顏色。例3.14在不同位置畫點(diǎn)#include"graphics.h"#include"conio.h"voidmain(){intgdriver=DETECT,gmode;intcolor,i,max;initgraph(&gdriver,&gmode,,u,);max=getmaxcolor();for(i=0;i<20;i+4-)putpixel(50+i*10,20,max);colon=getpixel(50,20);putpixel(150J50,color);getch();closegraph();)得到當(dāng)前屏幕模式下最大有效顏色值以(50,20)為起點(diǎn),在X正方向上每隔10用當(dāng)前屏幕模式下最大有效顏色畫點(diǎn)得到點(diǎn)(50,20)的像素顏色把color所指定的顏色寫到(150,150)處的像素上。3.3線的特性設(shè)定和填充一、線的特性設(shè)定用畫線函數(shù)進(jìn)行畫線時(shí),其默認(rèn)值均屬于一像素點(diǎn)寬度的實(shí)線。為了改變線形與線寬,TurboC提供了可以改變線型和線寬的函數(shù)。voidfarsetlinestyle(intlinestyle,unsignedpattern,intwidth);該函數(shù)所用三個(gè)參數(shù)含義如下:linestyle:為整型值,用來定義所畫直線類型表中前四種為系統(tǒng)預(yù)定義的類型,第五個(gè)為用戶自定義類型。線型的代號說明pattern:無符號整型數(shù)。該參數(shù)在需要用戶自定義線型時(shí)使用,如果是使用前四種系統(tǒng)預(yù)定義的線型,則該參數(shù)可取。值。width:整型數(shù)。指定所畫直線的粗細(xì),以像素為單位,分為兩種情況通過上述兒個(gè)參數(shù)的不同組合,就可以根據(jù)需要畫出不同類型、不同粗細(xì)的宜線。例如:setcolor(RED);Setlinestyle(DASHED-LINE,O,THICK-WIDTH);line(l0,20,150,70);從(10,20)到(150,70)用一條紅色的3個(gè)像素寬點(diǎn)劃線當(dāng)函數(shù)setlinestyle的第一個(gè)參數(shù)為USERBIT-LINE(或4)時(shí),可以由用戶自己定義宜線類型。此時(shí),第三個(gè)參數(shù)意義同前,直線類型在第二個(gè)參數(shù)中定義,該參數(shù)是一個(gè)16位二進(jìn)制碼,每一位(bit)表示一個(gè)像素。某一位置1時(shí)表示直線上相應(yīng)位置以當(dāng)前顏色顯示;如果某位為0,則其對應(yīng)像素不顯示或不改變(仍用原來顏色)。例如:111111111111111116位全置1,因此畫一條16個(gè)像素的點(diǎn)實(shí)線(就是實(shí)線)。1010101010101010則隔位置1,因此畫一條16個(gè)像素的點(diǎn)虛線(就是點(diǎn)線)。在實(shí)際編寫程序時(shí),一般把16位二進(jìn)制數(shù)轉(zhuǎn)換為4位十六進(jìn)制數(shù),每4位二進(jìn)制數(shù)轉(zhuǎn)換為1位十六進(jìn)制數(shù),故上面兩個(gè)例子轉(zhuǎn)換為十六進(jìn)制數(shù)為:FFFF和AAAA函數(shù)調(diào)用方法為:setlinestyle(4,0xAAAA,1);用這種方法,可以根據(jù)需要定義各種線型。#include<graphics.h>例3.15演示系統(tǒng)預(yù)定義的四種線型#include"conio.h"#include"stdio.h"voidmain()(inti,j,c,x=50,y=50,k=l;intgdriver=DETECT,gmode;printf("inputcolornumber.\n*');scanf("%d",&c); /*輸入所選擇的顏色initgraph(&gdriver,&gmode,Mc:\\tcn)cleardevice();setbkcolor(U);/*設(shè)置背景色為淺青色*/setcolor(c); /*設(shè)置前景色為輸入顏色*/for(j=l;j<=2;j++){fdr(i=0;i<4;i++){setlinestyle(i,O,k);rectangle(x,y,x+210,y+80);x=x+l10;y=y+40;)k=3;x=50;y=250;)getch();closegraph();)SeHinestyle(l,O,l),線型為點(diǎn)線,1個(gè)像素寬Setlinestyle(2,0,D,線型為中心線,1個(gè)像素寬當(dāng)輸入顏色為紅色時(shí)結(jié)果如下:Setlinestyle(O,O,l),線型為實(shí)線,1個(gè)像素寬Setlinesty?1,0,3),線型為點(diǎn)線,3個(gè)像素寬Setlinestyle(2,0,3),線型為中心線,3個(gè)像素寬Setlinestyle(3,O,3),線型為虛線,3個(gè)像素寬Setlinestyle(0,0,3),線型為實(shí)線,3個(gè)像素寬Setlinestyle(3,0,l),線型為虛線,1個(gè)像素寬.設(shè)置文本對齊方式voidfarsettextjustify(inthoriz,intvert);此函數(shù)規(guī)定文本輸出在水平和垂直方向上的輸出方式.參數(shù)horiz和vert是整型數(shù),用來確定文本輸出的當(dāng)前對齊位置。horiz和vert的取值horiz確定水平方向的對齊位置vert確定垂宜方向的對齊位置。例如,執(zhí)行settextjustify(RIGHT_TEXT,BOTTOM_TEXT);后,若執(zhí)行outtextxy(100,120,"AAAAAAAAAAAA");則(100,120)指的是所輸出字符串右下角。在缺省情況下,對齊方式是LEFT_TEXT,TOP_TEXT,如果用outtextxy輸出上面字符串,則(100,120)]旨的是字符串左上角。.改變矢量字體寬度和高度voidfarsetusercharsize(intmultx,intdivx,intmulty,intdivy);此函數(shù)設(shè)置了用戶定義的筆畫字型放大系數(shù),x、y方向的放大系數(shù)分別為multx/divx,multy/divy?調(diào)用setusercharsize。函數(shù)之后,每個(gè)顯示在屏幕上的字型都以缺省值大小乘以multx/divx為字符寬,乘以multy/divy為其字符高。這種方式只是在settextstyle。函數(shù)中的charsize=0時(shí)才起作用。用戶自定義字符的大小,即USER_CHAR_SIZE(默認(rèn)為0)圖形存取處理在圖形方式下,圖形存取有著重要的作用,這也是圖形動畫的基礎(chǔ)。圖形存取的基本原理是:把屏幕上某個(gè)區(qū)域的信息存入一個(gè)緩沖區(qū),然后在另一個(gè)區(qū)域把它的內(nèi)容顯示出來。一、檢測所需,內(nèi)存unsignedfarimagesize(intxl,intyl,intx2,inty2);該函數(shù)返回一個(gè)無符號整數(shù)值,它是存儲圖形所需的字節(jié)數(shù)。參數(shù)xl,yl,x2,y2均為整型數(shù),用來確定要存儲的屏幕區(qū)域。這個(gè)區(qū)域是一個(gè)矩形,其左上角坐標(biāo)為(xl、yl),右下角坐標(biāo)為(x2,y2).例如:執(zhí)行unsignedsize;size=imagesize(10,10,100,100);將把存儲左上角為(10,10),右下角為(100,100)的矩形區(qū)域所需的內(nèi)存字節(jié)數(shù)存入變量size中。存儲屏幕區(qū)域所需的字節(jié)數(shù)最多不能超過64K-1個(gè)字節(jié),否則返回值為-1(0xFFFF)=也就是說,圖形存取限制在64K字節(jié)之內(nèi)。二、圖形存入內(nèi)存voidfargetimage(intxl,intyl,intx2,inty2,void*bitmap);該函數(shù)將指定區(qū)域的圖形從屏幕拷貝到內(nèi)存區(qū)域。要復(fù)制的屏幕區(qū)域由左上角(xl,yl)和右下角(x2,y2)給出,它應(yīng)當(dāng)與imagesize函數(shù)中參數(shù)相同。bitmap是一個(gè)void類型指針,需要復(fù)制的屏幕區(qū)域?qū)⒈4嬖谟伤赶虻臄?shù)組中。例如:void*w;unsignedsize;size=imagesize(10,10,100,100);w=malloc(size);getimage(l0,10,100,100,w);malloc函數(shù)的作用是得到指向大小為括號的內(nèi)存區(qū)域的地址指針,它放置在stdlid.h中。三、從內(nèi)存復(fù)制圖形到屏幕voidfarputimage(intx,inty,void*bitmap,intop);該函數(shù)將getimage函數(shù)保存的圖形重新送回屏幕。參數(shù)(x,y)是恢復(fù)顯示圖形左上角的位置,bitm叩是指向void類型的指針,它指向用getimage函數(shù)復(fù)制的數(shù)組。參數(shù)op是一個(gè)整型數(shù),是圖形復(fù)制到屏幕上顯示方式參數(shù)OP的取值如果想使原來的圖形反相顯示則可使用下面語句:putimage(110,10,W,NOT_PUT)如果使用XOR-PUT,而內(nèi)存中的像素與當(dāng)前屏幕上的像素進(jìn)行異或操作。如果兩個(gè)像素都為1,則相應(yīng)的位被置為0,從而使原來的圖形消失。如果再復(fù)制一次,則會重新出現(xiàn)。利用這一特性,可以實(shí)現(xiàn)動畫操作。常用畫圖函數(shù)簡介一、直線類函數(shù).指定兩點(diǎn)間畫一直線voidfarline(intxl,intyl,intx2,inty2);用當(dāng)前顏色從點(diǎn)(xl,yl)到點(diǎn)(x2,y2)畫一條直線,當(dāng)前位置(CP)不變。.從當(dāng)前位置到(x,y)點(diǎn)畫一條直線voidfarlineto(intx,inty);用當(dāng)前顏色從當(dāng)前位置(CP)到(x,y)點(diǎn)畫一條直線,并把(CP)位置定位在(x,y)點(diǎn)。.從當(dāng)前坐標(biāo)以相對增量方式畫直線voidfarlinerel(intdeltax,intdeltay)從當(dāng)前位置到相對CP位置在X方向增大deltax,在Y方向增大deltay畫一直線。二、多邊形類函數(shù)1、畫矩形voidfarrectangle(intleft,inttop,intright,intbottom);用當(dāng)前畫筆畫出由坐標(biāo)(left,top)及(right.bottom)所定義的矩形。.畫多邊形voidfardrawpoly(intnumpoints,int*polypoints);用當(dāng)前畫筆畫一多邊形,多邊形的頂點(diǎn)數(shù)為numpoints,*polypoints指向一個(gè)整型數(shù)組,共有numpoints*2個(gè)整數(shù)組成,每一對整數(shù)給出一個(gè)委邊形頂點(diǎn)(x,y)坐標(biāo)。三、—圓弧類函數(shù)1、畫一圓弧voidfararc(intx,inty,intstartangle,intendangle,intradius);以(x,y)為圓心,radius為半徑,從起角startangle到終扁endangle,以當(dāng)前顏色畫,圓弧。.畫一橢圓弧voidfarellipse(intx,inty,intstart,intend,intxradius,intyradius);用當(dāng)前顏色畫一橢圓弧,其圓心為(x,y),x軸、y扁半徑分別為xradius,yradius,起始角和結(jié)束角分別為star和end。若起始角star為0°,結(jié)束角end為360°,則畫的是一個(gè)完整的橢圓。.畫一■圓voidfarcircle(intx,inty,intradius);以(x,y)為圓心。以radius(用像素表示)為半徑,用當(dāng)前畫筆顏色畫一圓。四、填充類函數(shù)1、畫矩形條voidfarbar(intleft,inttop,intright,intbottom);畫一矩形條,該條用當(dāng)前填充模式和填充色填充。條的左上角由(left,top)給出,條的右下角由(right,bottom)給出。只畫矩形條,不畫出條形輪廓,由setfillstyle()定義填充模式和填充色。.畫三維矩形條voidfarbar3d(intleft,inttop,intright,intbottom,intdepth,inttopflag);畫一三維矩形條,該條用當(dāng)前填充模式和填充顏色填充,條左上角由(left,top)給出,條的右下角由(right,bottom)給出,以像素為單位,條形深度由depth給出,topflag不為零時(shí)則放一個(gè)頂蓋,否則該三維矩形條無頂蓋,由setfillstyle()函數(shù)給出填充模式和顏色。.畫多邊形并填充voidfarfillpoly(intnumpoints,int*polypoints);用當(dāng)前畫線類型和顏色,畫一頂點(diǎn)數(shù)為numpoints的多邊形,然后用當(dāng)前填充模式和填充顏色填充這個(gè)多邊形,polypoints所指數(shù)組共有numpoints*2個(gè)整數(shù),每一對整數(shù)對應(yīng)給出多邊形一個(gè)頂點(diǎn)的x和y坐標(biāo)。由setfillstyle()函數(shù)給出填充模式和顏色。.畫一扇形并填充voidfarpieslice(intx,inty,intstangle,intendangle,intradius);以(x,y)為圓心,radius為半徑,stangle為起始角,endangle為終止角,畫上扇形,并且以當(dāng)前填充模式和顏色填充。該函數(shù)用當(dāng)前畫筆畫出扇形外廓線。由setfilktyle()為函數(shù)給出模式和顏色。.畫一個(gè)橢圓扇區(qū)并填充voidfarsector(intx,inty,intstangle,intendangle,intxradius,intyradius)以(x,y)為圓心,xradius為水平“byradius為垂直軸,stangle為起始角,endangle為終止角,畫一個(gè)橢圓扇區(qū),并用當(dāng)前填充模式和顏色填充,該函數(shù)用當(dāng)前畫筆畫出橢圓扇區(qū)外廓線。由setmistyleO函數(shù)給出模式和顏色。九、作業(yè)課后習(xí)題十、本章小結(jié)在本章中,介紹了在c語言下進(jìn)行圖形程序設(shè)計(jì)的基礎(chǔ)知識:圖形顏色設(shè)置,線的特性設(shè)定和填充,圖形模式下文本處理等。第4章第四章二維圖形生成和變化技術(shù)一、教學(xué)目標(biāo)通過對本章的學(xué)習(xí),要求熟悉二維圖形的基本繪圖元素,特別是直線段的生成和曲線的生成。二、教學(xué)要求1、掌握直線段的生成;2、掌握區(qū)域填充的方法。三、教學(xué)內(nèi)容提要1基本繪圖元素2直線段的生成3曲線的生成4區(qū)域填充5二維圖形變換6二維圖像裁剪7反走樣技術(shù)四、教學(xué)重點(diǎn)、難點(diǎn)及解決方法看點(diǎn)是掌握直線段和曲線的生成。五、課時(shí)安排8學(xué)時(shí)六、教學(xué)設(shè)備課堂教學(xué)七、檢測教學(xué)目標(biāo)實(shí)現(xiàn)程度的具體措施和要求通過課堂提問的方式來檢測學(xué)生對基本概念的掌握程度。八、教學(xué)內(nèi)容4.1基本繪圖元素在第二章我們已討論過坐標(biāo)系統(tǒng)的世界坐標(biāo)系、規(guī)范坐標(biāo)系和設(shè)備坐標(biāo)系三種坐標(biāo)系。坐標(biāo)系統(tǒng)確定之后,需要使用不同的繪圖元素來描述圖形,它們是點(diǎn)、直線、曲線和其他基本的圖形元素。一、點(diǎn)點(diǎn)是圖形中最基本的圖素,直線、曲線以及其他的圖元都是點(diǎn)的集合。在計(jì)算機(jī)圖形學(xué)中,點(diǎn)是用數(shù)值坐標(biāo)來表示的。在三維坐標(biāo)系中點(diǎn)是由(x,y,z)三個(gè)數(shù)值組成的坐標(biāo)表示二、直線一條直線是指所有在它上面的點(diǎn)的集合,在圖形學(xué)中研究的對象是直線段。已知線段的起點(diǎn)坐標(biāo)(Xs,Ys)。終點(diǎn)坐標(biāo)(Xe,Ye)這兩點(diǎn)就確定了這條線段,并用線段上的任意一點(diǎn)(x,y)均滿足:圖形顯示器是由一個(gè)個(gè)排列有序的像素所構(gòu)成,畫一條直線實(shí)際上是根據(jù)一系列計(jì)算出來并與該線靠近的像素而繪制。因此,顯示器劃分的像素點(diǎn)越多分辨率越高。繪圖儀繪制線段是筆在X,Y方向移動,畫線時(shí)單方向的一次移動距離稱為步矩,設(shè)備的步矩越小,繪出的圖形越精確。三、曲線曲線包括圓、橢圓、弧線和由許多類型的方程所確定的圖形。在計(jì)算機(jī)圖形程序設(shè)計(jì)中最好將曲線定義成不能構(gòu)成直線的點(diǎn)的集合。曲線被認(rèn)為是圖形學(xué)的基礎(chǔ)。三次參數(shù)曲線4.2直線段的生成直線段是最基本的圖形,因此,直線段生成的質(zhì)量好壞與速度快慢將直接影響整個(gè)圖形生成的質(zhì)量和速度。直線生成算法在圖形軟件設(shè)計(jì)中起著關(guān)鍵的作用。下面介紹幾種直線生成算法:①逐點(diǎn)比較法②數(shù)值微分法(DDA法)③Bresenham法區(qū)域填充是一個(gè)彩色區(qū)域,可以是均勻的也可以是不均勻的,區(qū)域邊界可以是直線也可以是曲線??商峁┎煌膬?nèi)部填充類型用以充滿區(qū)域內(nèi)部,填充的類型可能是不同的顏色,不同的灰度或者不同的填充圖案。還可以用方程生成的梯度變化曲線完成填充過程。陰影填充可以通過來自一個(gè)光源的投影宜線計(jì)算出,因而在填充區(qū)域中的像素相應(yīng)地發(fā)生變化。用戶可根據(jù)系統(tǒng)硬件和軟件,用一種或幾種色彩進(jìn)行填充,也可使用多種顏色填充區(qū)域。6=tgB-tg。=當(dāng)6<0時(shí),表示筆在OA線段下方,應(yīng)該向+Y方向走一步當(dāng)6>0時(shí),表示筆在OA線段上方,應(yīng)該向+X方向走一步由于分母XMXA>0,因此只需判斷分子YMXA-YAXM的正負(fù)即可,得偏差公式:FM=YMXA-YAXM對任意點(diǎn),偏差函數(shù)的一般形式為:Fi=XAYi-YAXi其中,XA,YA是終點(diǎn)A坐標(biāo)。2)遞推公式由公式可以看出,由于每次要計(jì)算兩次乘法和一次減法,所以計(jì)算工作量大,為了簡化計(jì)算,可設(shè)法用前一點(diǎn)的偏差來推算后一點(diǎn)的走步方向以及走步后的偏差,這種方法稱為遞推法。遞推公式很容易用計(jì)算機(jī)實(shí)現(xiàn)。遞推公式可根據(jù)下圖用偏差函數(shù)判斷筆進(jìn)方向的圖例得出設(shè)筆當(dāng)前位置為M1(X1,Y1),此時(shí)F1=Y1XA-YAXKO,應(yīng)走+Y一步到M2即X2=XI,Y2=Y1+1,+1表示走一步M2處的偏差為:F2=Y2XA—YAX2=F1+XA(用X2=X1,Y2=Y1+1代入得到)若F220,應(yīng)走+X一步到M3,貝UX3=X2+1,Y3=Y2,M3處的偏差為:F3=Y3XA-YAX3=Y2XA-YAX2-YA=F2—YA這樣依次進(jìn)行下去,就得到第i步的遞推公式:當(dāng)Fi>O時(shí),向+X方向走一步,此時(shí)偏差Fi+l=Fi-YA(i=l,2, n)?當(dāng)Fi〈O時(shí),向+Y方向走一步,此時(shí)偏差Fi+l=Fi+XA(i=l,2, n).偏差Fi的推算,只用到終點(diǎn)坐標(biāo)值XA,YA而與中間點(diǎn)的坐標(biāo)值無關(guān),且只需進(jìn)行加減運(yùn)算。3)任意象限偏差計(jì)算對于第二、三、四象限的直線,也可類似推出。當(dāng)直線段處于第二、三、四象限時(shí),偏差值的計(jì)算及走步方向如下表所示:二、數(shù)值微分法(DDA法).定義數(shù)值微分法即DDA法(DigitalDifferentialAnalyzer),這是?種基于直線的微分方程來生成直線的方法。.數(shù)值微分法的原理設(shè)(xLyl)和(x2,y2)分別為所求直線的端點(diǎn)坐標(biāo),由直線的微分方程得可通過計(jì)算由x方向的增量Ax引起y的改變來生成直線,由yi+l=yi+Ay(yi為直線上某步的初值)則 可通過計(jì)算由y方向的增量引起x的改變來生成直線若設(shè)Xi+l=Xi+Ax則:實(shí)際上是一個(gè)遞推公式,即yi+1由前一點(diǎn)的yi和X的增量求得;Xi+1由前一點(diǎn)的Xi和Y的增量求得。.DDA的算法基本思想選定x2-xl和y2-yl中較大者作為步進(jìn)方向(假設(shè)x2-xl較大)取該方向上的Ax為一個(gè)像素單位長,即x每次遞增一個(gè)像素,然后利用前面公式計(jì)算相應(yīng)的y值,把每次計(jì)算出的(xi+l,yi+l)經(jīng)取整后順序輸出到顯示器,則得光柵化后的直線。為什么取x2-xl和y2-yl中較大者步方向?此圖中Y2—Y1=8>X2-X1=4三、Bresenham法1、問題提出DDA法就是根據(jù)直線的斜率來計(jì)算出下一個(gè)y值,經(jīng)取整后以確定下一個(gè)像素點(diǎn),因?yàn)檫M(jìn)行取整運(yùn)算,這就難以避免所取像素點(diǎn)偏在實(shí)際直線的某一側(cè)。而Bresenham算法根據(jù)直線的斜率確定或者選擇變量在X軸或丫軸方向每次遞增一個(gè)單位,其變量的增量值根據(jù)實(shí)際直線與網(wǎng)格交點(diǎn)與像素點(diǎn)的距離來選擇像素點(diǎn)而取?;?,這距離稱為誤差,記作e。⑴偏差e實(shí)際直線與網(wǎng)格交點(diǎn)與像素點(diǎn)之間的距離稱偏差e。以左圖第一個(gè)八分圖的直線為例,即直線的斜率在0?1之間。若通過(0,0)的宜線的斜率大于1/2,即e>l/2,它與x=l直線的交點(diǎn)離y=l直線較y=0直線近,因此取像素點(diǎn)(1,1)。具體見圖中的e2如果斜率小于1/2,即e<l/2,則應(yīng)取像素點(diǎn)(1,0),具體見圖中的el當(dāng)斜率等于1/2時(shí),即e=l/2,沒有確定

溫馨提示

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

評論

0/150

提交評論