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