第8章 交互技術(shù)與用戶接口_第1頁
第8章 交互技術(shù)與用戶接口_第2頁
第8章 交互技術(shù)與用戶接口_第3頁
第8章 交互技術(shù)與用戶接口_第4頁
第8章 交互技術(shù)與用戶接口_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章交互技術(shù)與用戶接口8.1計算機(jī)圖形軟件標(biāo)準(zhǔn)化8.2用戶接口8.3交互任務(wù)和交互技術(shù)8.4交互式圖形程序庫OpenGL8.5構(gòu)造一個簡單的交互式圖形系統(tǒng)習(xí)題8.1計算機(jī)圖形軟件標(biāo)準(zhǔn)化8.1.1圖形軟件標(biāo)準(zhǔn)計算機(jī)圖形軟件的標(biāo)準(zhǔn)通常是指圖形系統(tǒng)及其相關(guān)應(yīng)用系統(tǒng)中各界面之間進(jìn)行數(shù)據(jù)傳送和通信的接口標(biāo)準(zhǔn),以及供圖形應(yīng)用程序調(diào)用的子程序功能及其格式標(biāo)準(zhǔn),前者稱為數(shù)據(jù)及文件格式標(biāo)準(zhǔn),后者稱為子程序界面標(biāo)準(zhǔn)。計算機(jī)圖形軟件標(biāo)準(zhǔn)在圖形及其應(yīng)用系統(tǒng)各界面之間的作用和關(guān)系如圖8.1所示,其中CGM和CGI是面向圖形設(shè)備的接口標(biāo)準(zhǔn);GKS、GKS-3D、PHIGS、OpenGL等是面向圖形應(yīng)用軟件的標(biāo)準(zhǔn);IGES和STEP是面向圖形應(yīng)用系統(tǒng)中工程和產(chǎn)品數(shù)據(jù)模型及其文件格式的標(biāo)準(zhǔn)。圖形化的用戶接口——窗口系統(tǒng)是近幾年來蓬勃發(fā)展并廣泛應(yīng)用的工業(yè)標(biāo)準(zhǔn),其典型代表有工作站上的Motif、OpenLook和個人計算機(jī)上的Ms-Windows。圖8.1圖形系統(tǒng)各個界面的標(biāo)準(zhǔn)8.1.2常用圖形軟件標(biāo)準(zhǔn)簡介1.計算機(jī)圖形元文件(CGM-ComputerGraphicsMetafile)CGM是ANSI1986年公布的標(biāo)準(zhǔn),1987年成為ISO標(biāo)準(zhǔn)。它是一套與設(shè)備無關(guān)的語義、詞法定義的圖形文件格式,提供了隨機(jī)存取、傳送、簡潔定義圖形的手段。

CGM標(biāo)準(zhǔn)規(guī)定了生成、存儲、傳送圖形信息的格式。設(shè)計CGM的主要目的是:(1)提供圖形存檔的數(shù)據(jù)格式;(2)作為假脫機(jī)繪圖的圖形協(xié)議;(3)為圖形設(shè)備接口標(biāo)準(zhǔn)化創(chuàng)造條件;(4)便于檢查圖形中的錯誤,保證圖形質(zhì)量;(5)提供了把不同圖形系統(tǒng)所產(chǎn)生的圖形集成到一起的一種手段。

CGM的結(jié)構(gòu)如圖8.2所示。每個圖形元文件由一個元文件描述體和若干個邏輯上獨立的圖形描述體順序組成。每個圖形描述體由一個圖形描述單元和一個圖形數(shù)據(jù)單元構(gòu)成。圖8.2CGM的結(jié)構(gòu)2.圖形核心系統(tǒng)(GKS-GraphicsKernelSystem)GKS提供了在應(yīng)用程序和圖形輸入/輸出設(shè)備之間的功能接口,是一個子程序接口標(biāo)準(zhǔn)。它只定義了一個獨立于語言的圖形系統(tǒng)核心,在具體應(yīng)用中,必須以符合使用語言約定的方式,把GKS嵌入到相應(yīng)的語言之中。GKS在圖形應(yīng)用中的地位如圖8.3所示。圖8.3GKS在應(yīng)用中的地位

GKS提供一系列交互和非交互式圖形設(shè)備的全部基本圖形處理功能,大致可分為以下10類:

(1)控制功能:打開、關(guān)閉GKS,以使工作進(jìn)入或退出活動狀態(tài)和刪除工作站等;(2)輸出功能:確定輸出圖形的類型;(3)輸出屬性:設(shè)定圖素的各種屬性以及各種圖素在工作站上的表現(xiàn)方式;(4)變換功能:實現(xiàn)規(guī)范化變換和工作站變換;(5)圖組功能:對圖形進(jìn)行生成、刪除、復(fù)制以及實現(xiàn)圖組屬性控制;(6)輸入功能:對各種輸入設(shè)備初始化,設(shè)定設(shè)備方式,確定輸入控制方式;(7)詢問功能:查詢GKS描述表、狀態(tài)表、出錯表、工作站描述表、圖素表等;(8)實用程序:實現(xiàn)坐標(biāo)變換等;(9)元文件處理;(10)出錯處理。

GKS定義了以下六種輸入功能:(1)定位設(shè)備(Locator):提供用戶坐標(biāo)系中某一點的坐標(biāo),并變換到規(guī)格化的設(shè)備坐標(biāo)系中;(2)筆劃設(shè)備(Stroke):輸入用戶坐標(biāo)系中一組點的坐標(biāo),并變換到規(guī)格化的設(shè)備坐標(biāo)系中;(3)定值設(shè)備(Valuator):取得一個整數(shù)或?qū)崝?shù)值;(4)選擇設(shè)備(Choice):從一組可以選擇的對象中選取一個,并輸出一個標(biāo)志(通常是一個非負(fù)的整數(shù));(5)拾取設(shè)備(Pick):用游標(biāo)選定一個圖素、圖段或整圖(含正文),并輸出相應(yīng)的選擇標(biāo)志符或圖段名;(6)字符串設(shè)備(String):接收一個字符串。

GKS包括下列6種基本圖素:(1)線元素:折線集(Polyline);(2)點元素:符號集(Polymarker);(3)字符元素:文本(Text);(4)光柵元素:區(qū)域填充(Fillarea);(5)單元陣列(Cellarray);(6)一般圖素(GDP-GeneralizedDrawingPrimitive),一般畫線圖素,如圓、曲線以及用戶自定義圖素。輸出圖素具有三類屬性:幾何屬性、非幾何屬性和標(biāo)志符。幾何屬性控制圖素的幾何形狀和大小;非幾何屬性控制圖素的線型、顏色等。圖素的這些屬性設(shè)置存放在GKS狀態(tài)表中。

在GKS中,圖素能以圖段方式組合,并以圖段為單位進(jìn)行圖形輸出,各圖段由應(yīng)用程序定義,GKS根據(jù)所指定的圖段名進(jìn)行識別與選擇,而且還可對圖段進(jìn)行變換、可見性預(yù)測、改名、檢測及刪除等一系列操作。

GKS設(shè)置了三種不同的坐標(biāo)系:(1)用戶坐標(biāo)系(WCS):專供用戶應(yīng)用程序使用。(2)規(guī)格化的設(shè)備坐標(biāo)系(NDCS):這是與設(shè)備無關(guān)的二維直角坐標(biāo)系,坐標(biāo)取值范圍在0.0~1.0之間,應(yīng)用程序可使用該坐標(biāo)系來定義圖形輸出界面的位置;更多的是用NDCS來存放圖形數(shù)據(jù)的中間結(jié)果,以便在不同的圖形設(shè)備或圖形系統(tǒng)之間實現(xiàn)數(shù)據(jù)共享。(3)設(shè)備坐標(biāo)系(DCS):這是圖形設(shè)備在處理圖形時所使用的坐標(biāo)系,各種圖形設(shè)備均有各自的設(shè)備坐標(biāo)系。

GKS提供了一個稱為元文件的順序文件接口,GKS的元文件(GKSM)主要用于:(1)圖形信息的存檔;(2)在不同系統(tǒng)之間傳送圖形信息;(3)在不同的GKS應(yīng)用軟件之間傳送圖形信息;(4)與圖形信息相關(guān)的非圖形信息的存儲和復(fù)用。

GKS元文件結(jié)構(gòu)及其讀、寫過程如圖8.4所示。圖8.4GKS文件結(jié)構(gòu)8.2用戶接口8.2.1交互式圖形系統(tǒng)的邏輯構(gòu)成交互式圖形系統(tǒng)應(yīng)該具有良好的邏輯結(jié)構(gòu),對一個交互式圖形系統(tǒng)要進(jìn)行合理的層次結(jié)構(gòu)和模塊結(jié)構(gòu)劃分,把整個系統(tǒng)分為若干層次,每一層次再分為若干模塊,使整個系統(tǒng)容易設(shè)計、調(diào)試和維護(hù),便于系統(tǒng)的擴(kuò)充和移植??偟膩砜?一個交互式圖形系統(tǒng)在概念上由四個部分組成,即應(yīng)用數(shù)據(jù)結(jié)構(gòu)/模型、圖形應(yīng)用程序、圖形支撐軟件或稱基本圖形軟件、圖形設(shè)備。圖8.5是一個交互式圖形系統(tǒng)的概念化框圖。圖8.5交互式圖形系統(tǒng)的邏輯組成1.應(yīng)用數(shù)據(jù)結(jié)構(gòu)/模型應(yīng)用數(shù)據(jù)結(jié)構(gòu)實質(zhì)上是一些數(shù)據(jù)文件(或建立在數(shù)據(jù)庫中),其中保存著構(gòu)造圖形的一個或多個對象的全部描述信息。這些信息中有說明對象所有組成部分的形狀和大小的幾何信息及其拓?fù)湫畔?有說明對象圖形的色彩、紋理、表面性質(zhì)等的屬性信息;以及其它一些如材料、單價、加工要求等非幾何數(shù)據(jù)。2.圖形應(yīng)用軟件圖形應(yīng)用軟件是為解決某種具體應(yīng)用問題而開發(fā)的圖形軟件,是整個應(yīng)用軟件的一部分,也是圖形系統(tǒng)中的核心部分,通常由用戶編寫或由系統(tǒng)設(shè)計者與用戶一起編寫。交互功能是對其主要的要求,一般用高級語言進(jìn)行編寫和開發(fā)。圖形應(yīng)用軟件主要完成以下三個方面的功能:(1)它從應(yīng)用數(shù)據(jù)結(jié)構(gòu)/模型中取得對象的幾何數(shù)據(jù)及其屬性,按照應(yīng)用的要求對數(shù)據(jù)進(jìn)行變換處理,使用圖形支撐軟件(如TurboC的graphics.h、OpenGL等)所提供的各種圖形功能,生成該對象的圖形,并在顯示屏幕或繪圖機(jī)上輸出,或者作進(jìn)一步的處理。(2)通過交互手段,根據(jù)圖形輸入設(shè)備送來的命令和數(shù)據(jù),用來構(gòu)造、增添或修改被處理對象的模型。(3)完成初始化、定義窗口與視區(qū)、設(shè)置菜單功能,并且進(jìn)行分項計算,完成動態(tài)模擬以及用戶接口設(shè)計等其它功能。3.支撐軟件(1)設(shè)備驅(qū)動程序。這是最底層的軟件,主要解決圖形設(shè)備與主機(jī)的通信、接口等問題,是一些最基本的輸入、輸出程序。(2)基本子程序。這類程序主要包括生成基本圖形元素、

對設(shè)備進(jìn)行管理的各程序模塊。

(3)功能子程序。它是在基本子程序的基礎(chǔ)上編制的,主要任務(wù)是建立圖形數(shù)據(jù)結(jié)構(gòu)(圖形檔案),定義、修改和輸出圖形,建立各圖形設(shè)備之間的聯(lián)系。8.2.2用戶接口的常用形式及其設(shè)計原則1.用戶接口的常用形式常用的面向應(yīng)用的用戶接口形式有三種,即子程序庫、專用語言和交互命令。1)子程序庫這種形式的基本思想是選擇一種合適的高級程序設(shè)計語言(如C、C++、Java等)作為主語言,用此主語言擴(kuò)展一系列的過程或函數(shù)調(diào)用,用以實現(xiàn)有關(guān)的圖形設(shè)計和處理。用戶使用圖形子程序庫的過程一般有以下幾步:第一步,編寫源程序(含主語言語句和圖形子過程或子函數(shù)的調(diào)用語句)。第二步,編譯源程序,產(chǎn)生相應(yīng)程序的目標(biāo)代碼。第三步,裝配連接圖形程序庫和系統(tǒng)庫,產(chǎn)生相應(yīng)程序的可執(zhí)行代碼。第四步,運行可執(zhí)行代碼,判斷結(jié)果的正確性,若有錯,轉(zhuǎn)第一步修改源程序后繼續(xù)以下各步的操作;若無錯,輸出執(zhí)行結(jié)果,結(jié)束。2)專用語言專用語言的功能與子程序包的功能類似,但其使用形式與子程序包大不一樣。3)交互命令人與計算機(jī)運行的程序之間相互傳遞信息的過程稱為交互,子程序包中每個子程序的功能以及專用語言中的有關(guān)語句都可以按照命令方式提供給用戶使用。2.用戶接口的設(shè)計原則用戶接口確定用戶與計算機(jī)如何進(jìn)行信息交換。設(shè)計一個友好的圖形用戶接口應(yīng)遵循以下三個主要的設(shè)計原則:(1)易于接受,用戶能迅速掌握系統(tǒng)的特點;(2)易于操作和使用,通過用戶接口用戶能夠以最簡單的方式提出應(yīng)用要求,使用系統(tǒng)的全部功能。(3)高效率、高可靠性和實用性,并盡可能減少錯誤。本著上述三條基本原則,在進(jìn)行圖形系統(tǒng)用戶接口設(shè)計時應(yīng)著重考慮如下幾個方面:1)適應(yīng)不同熟練程度的用戶在交互式圖形系統(tǒng)中,用戶接口應(yīng)提供多種軟件操作方法給不同熟練程度的用戶。2)保持一致性一致性原則是指在設(shè)計系統(tǒng)的各個環(huán)節(jié)時,應(yīng)遵從統(tǒng)一的、簡單的規(guī)則,這包括系統(tǒng)內(nèi)部的一致性和系統(tǒng)之間的一致性。3)回退和出錯處理用戶在使用系統(tǒng)時難免會出錯,好的用戶接口設(shè)計應(yīng)使用戶不會因為怕出錯而縮手縮腳,處處小心,可以采用如回退(undo)機(jī)制、取消機(jī)制、確認(rèn)機(jī)制、設(shè)計好的診斷程序、提供出錯消息、對可能導(dǎo)致錯誤的一些動作進(jìn)行預(yù)測、約束機(jī)制、動作與對象相一致等方法避免用戶因誤操作而造成損失或挽回?fù)p失。4)反饋反饋就是動態(tài)地顯示系統(tǒng)運行中所發(fā)生的變化,以便更有效地進(jìn)行交互作用。反饋要求系統(tǒng)在接收到用戶每次輸入后給出某種類型的反應(yīng)。5)顯示屏幕的有效利用在圖形系統(tǒng)用戶接口設(shè)計中,怎樣以最有效的方式在屏幕上顯示信息是一個非常重要的問題。行信息顯示一般需考慮如下幾個問題:(1)信息顯示的合理布局。圖形用戶接口中通常將屏幕分為三個基本部分:用戶工作區(qū)、菜單區(qū)、顯示提示及反饋信息區(qū)。(2)正確地使用圖標(biāo)。1975年,D.C.Smith在他的Stanford博士論文中首次提出“Icons”這個新名詞,以后圖標(biāo)被廣泛應(yīng)用。圖標(biāo)可以分為兩類,一類是應(yīng)用圖標(biāo)(ApplicationIcons),用來代表具體的對象,如圖8.6所示MathType公式編輯器中的圖標(biāo);另一類是控制圖標(biāo)(ControlIcons),代表旋轉(zhuǎn)、放大、比例、裁剪和粘貼等對對象的操作和控制,如圖8.7所示MicrosoftWord中的常用工具欄圖標(biāo)。圖8.6應(yīng)用圖標(biāo)圖8.7控制圖標(biāo)(3)恰當(dāng)?shù)厥褂酶鞣N表示方法進(jìn)行選擇性信息顯示。在程序的執(zhí)行過程中,無論是命令輸入反饋,還是命令執(zhí)行結(jié)果的輸出,都需要顯示信息,有時甚至?xí)写罅康男畔⑿枰@示。6)視覺效果設(shè)計這里強(qiáng)調(diào)的是色彩的使用。如就色調(diào)而言,應(yīng)盡量避免使用容易引起視覺疲勞的藍(lán)色、紫色、紅色和橙色,而應(yīng)選擇黃色、綠色、藍(lán)綠色和淡青色等不容易引起視覺疲勞的色調(diào)。7)聯(lián)機(jī)幫助功能為用戶提供聯(lián)機(jī)幫助(OnLineHelp)措施,在用戶操作過程中的任何時刻能提供幫助。聯(lián)機(jī)幫助功能應(yīng)具有:(1)完整性。做到有求必應(yīng),應(yīng)盡可能滿足用戶的所有要求。(2)針對性。不同用戶有不同要求,應(yīng)對不同的用戶提供不同的幫助信息。(3)高效性。使用戶可以方便、高效地找到幫助主題,如用超媒體結(jié)構(gòu)構(gòu)建的幫助系統(tǒng)。(4)智能性。幫助系統(tǒng)應(yīng)能夠猜測到用戶的困難,使用諸如向?qū)У姆绞綆椭脩艚鉀Q問題。(5)實時性。應(yīng)能為用戶在不同操作中主動提供相關(guān)主題幫助信息。8.3交互任務(wù)和交互技術(shù)8.3.1交互任務(wù)交互過程中常見的任務(wù)可歸納成六種類型。1.定位定位任務(wù)是用來給應(yīng)用程序指定位置坐標(biāo),如(x,y)或(x,y,z)。定位分為兩種情況,一種是把屏幕上的光標(biāo)移到要確定的點;第二種就是用鍵盤鍵入一個點的坐標(biāo)。2.選擇選擇任務(wù)是要從一個選擇集中挑選一個元素,常用的有命令選擇、操作數(shù)選擇、屬性選擇和對象選擇等。選擇集一般分為固定集和可變集兩種。命令、屬性及對象類型等選擇集一般是固定的,而對象調(diào)用選擇集通常是可變的。3.輸入文本輸入文本任務(wù)即輸入一個字符串,如鍵入一個插圖說明,向文字處理器輸入文字等。4.輸入數(shù)值輸入數(shù)值任務(wù)是要在最大和最小數(shù)值之間確定一個值。5.定向定向是在指定的坐標(biāo)系中確定形體的方向,此時需要由應(yīng)用程序來確定其反饋類型、自由度和精度。6.定路徑定路徑任務(wù)是一系列定位和定向任務(wù)的結(jié)合,它與時間、空間有關(guān)。8.3.2交互技術(shù)1.定位技術(shù)定位技術(shù)有直接定位和間接定位兩種方式。直接定位是指使用定位設(shè)備直接在屏幕上指定一個點的位置,比如使用觸感屏幕時,可直接用手在屏幕上指定一個點的位置;或用光筆在屏幕上指定一個點。圖8.8數(shù)字化儀和鼠標(biāo)等設(shè)備的相對移動控制光標(biāo)定位(異或方式顯示光標(biāo))圖8.9定位技術(shù)中的反饋2.橡皮筋技術(shù)有時定位操作依賴于環(huán)境。例如,在繪圖時,已經(jīng)存在一個圓C和圓外一點A,現(xiàn)在要確定另外一個點B,使AB連線與圓C相切。這樣的點的確定可通過橡皮筋技術(shù)的使用而變得容易實現(xiàn)。如果在用定位器移動點B時屏幕上始終有一線段連結(jié)AB,猶如有一根橡皮筋連結(jié)著AB兩點一樣,這就是橡皮筋技術(shù)。有了橡皮筋技術(shù),操作員只需在移動B點使AB與圓C相切時按下定位按鍵,就能準(zhǔn)確地定位,如圖8.10所示。圖8.10用橡皮筋技術(shù)定位(顯示線段用異或方式)橡皮筋技術(shù)除了用于橡皮筋線段外,還可用于其它一些方面。比如橡皮筋圓和橡皮筋矩形等(如圖8.11所示)。圖8.11橡皮筋技術(shù)圖例橡皮筋圓的圓心固定,當(dāng)圓上一點移動時,生成的圓跟著變化。一旦滿意,按下定位鍵,圓上該點就得到確定。也可以將兩點交換,即圓上一點固定,圓心變化。當(dāng)按下定位鍵時圓心得到確定。橡皮筋矩形的一個頂點是固定的。在用定位器移動與該頂點相對的另一個頂點時,始終有一個矩形跟著變化。橡皮筋棱錐的底(多邊形)是固定的,隨著頂點的移動,棱錐的各棱線跟著變化,當(dāng)按下定位鍵時,頂點確定,棱錐也隨之確定。圖8.12拖曳技術(shù)3.拖曳(拖動)技術(shù)在復(fù)雜物體的模型設(shè)計中,常用到拼裝操作。拖曳技術(shù)常被用于拼裝定位和其它一些操作(如布局操作)中,以便使上述工作直觀、簡便、高效。拖曳技術(shù)以取樣定位輸入為基礎(chǔ),應(yīng)用程序不斷地讀取定位器位置,在每一原位置上擦去原有對象圖形,再在新位置上顯示該對象圖形,從而使對象的圖形被操作員在屏幕上拖曳到適當(dāng)位置。這里,顯示和擦除圖形的操作與橡皮筋一樣使用異或方式,以便不影響其它圖形。圖8.12給出了拖曳一電路元件的過程。4.菜單技術(shù)菜單是一種很重要的交互技術(shù)。它可用于指定命令、確定操作對象或選定屬性等場合。使用菜單可較好地改善應(yīng)用系統(tǒng)的用戶接口的友好性。1)菜單的層次結(jié)構(gòu)根據(jù)可選對象的數(shù)量、性質(zhì)及彼此的邏輯關(guān)系,菜單可以是單層次的,也可以是多層次的。2)菜單的表示菜單的表示方法有三種:字符串方法、圖符方法和圖像方法。在字符串方法中,每一菜單項用一字符串來表示,如圖8.13所示。一個菜單可以是單列式、單行式或矩陣式結(jié)構(gòu),這樣的菜單比較容易組織和實現(xiàn)。在圖符方法中,每一菜單項用一個形象地表達(dá)該項內(nèi)容的圖形符號來表示,如圖8.14所示的Word的自選圖形菜單的各個菜單項。這樣的菜單比較容易理解和使用。圖8.13文字菜單示例圖8.14圖符菜單示例在圖像菜單方法中,每一菜單項由表示一個實物的視圖來表示,比如某一類零件的零件菜單中,每一項用該零件的立體圖表示,使菜單更加直觀、準(zhǔn)確,如圖8.15所示。圖8.15圖像菜單示例3)菜單的顯示控制菜單的顯示位置有固定式和可變式兩種。固定式菜單可以在屏幕上顯示,也可以固定在數(shù)字化儀等設(shè)備上。彈出式(pop-up)菜單是典型的位置可變式菜單。它總是顯示在光標(biāo)的現(xiàn)行位置,如圖8.16所示。彈出式菜單在選擇以后又自動消失。菜單的可見性控制有全局性菜單(永久可見)和局部性菜單(使用時可見)兩種控制方式。圖8.16菜單顯示控制示例圖8.17菜單的有效和無效4)菜單的選擇菜單可使用多種設(shè)備來選擇,如使用指點設(shè)備直接選擇;使用方向鍵順序循環(huán)選擇;使用數(shù)字鍵指定選擇或使用功能鍵對應(yīng)選擇等。菜單中的某些項可動態(tài)地定義為有效或無效,無效的項不能選擇,如圖8.17中顯示較暗的菜單項無效。5.定值技術(shù)定值輸入用于輸入各種參數(shù)和數(shù)據(jù)。定值輸入設(shè)備可以是鍵盤、旋鈕等,也可以是各種指點設(shè)備,如鼠標(biāo)、數(shù)字化儀等。使用鍵盤鍵入某值是最基本的和最直接的定值輸入方法,此外可以通過在屏幕上顯示標(biāo)尺、刻度尺、拉桿或按鈕等模擬的辦法輸入定值,如圖8.18所示。用戶通過使用定點設(shè)備控制滑塊在尺子上的移動,同時在屏幕上給出與位置對應(yīng)的值,在適當(dāng)時刻,按下確定鍵來獲得要輸入的值。這種方法比較直觀。圖8.18用標(biāo)尺進(jìn)行定值輸入6.拾取技術(shù)1)指定名稱法操作員可以通過指定欲拾取對象的名稱來實現(xiàn)拾取。但記住這些名稱并不是容易的事,所以常用一列表記錄所有對象,然后通過列表選取對象,如圖8.19所示。圖8.19名稱法拾取技術(shù)2)特征點法選擇時讓圖形的特征點(如線段的端點、圓的圓心等)以強(qiáng)光醒目顯示(如圖8.20(a)所示),操作員通過選擇特征點來拾取對象,這樣涉及的內(nèi)部計算較少。圖8.20其它拾取技術(shù)(a)特征點;(b)邊界矩形;(c)分類法;(d)直接法3)外接矩形法為每一基本對象確定一外接正規(guī)矩形(其四邊分別平行于坐標(biāo)軸),只要選中矩形內(nèi)就表示拾取該對象(如圖8.20(b)所示)。該方法只能用于邊界矩形非重選情況。4)分類法將折線、點、弧等分別在有關(guān)按鍵的控制下進(jìn)行拾取(如圖8.20(c)所示),這有助于減少計算。5)直接法使用游標(biāo)拾取,只要有線條穿過以游標(biāo)所在位置為中心的小正方形(邊長在設(shè)計時確定)內(nèi),即認(rèn)為該對象被拾取了(如圖8.20(d)所示)。圖8.21對象的層次結(jié)構(gòu)6)矩形包圍法通過指定一個確定矩形,完全包含在矩形之內(nèi)的對象被拾取,凡在矩形之外或只有一部分包含在矩形內(nèi)的對象均不被拾取。7.網(wǎng)格與吸附網(wǎng)格化是幫助繪制整齊、精確圖形的一種技術(shù)。網(wǎng)格化一般用在用戶坐標(biāo)系統(tǒng)中,按從用戶坐標(biāo)系統(tǒng)的窗口到屏幕視區(qū)的變換映射到屏幕上去。如圖8.22所示,網(wǎng)格一般是規(guī)則的,且覆蓋整個顯示區(qū)。應(yīng)用程序?qū)⒍ㄎ黄髯鴺?biāo)舍入到最近的網(wǎng)格交叉點上去,從而使繪制的圖形規(guī)整、精確。

圖8.22網(wǎng)格技術(shù)圖8.23引力域技術(shù)8.約束技術(shù)所謂約束技術(shù)就是指在圖形繪制過程中對圖形的方向、對齊方式等進(jìn)行規(guī)定和校準(zhǔn)??梢杂卸喾N約束方式,最常用的是水平或垂直約束,這可以使用戶方便地實現(xiàn)水平和垂直直線的繪制。另外,還有其它類型的約束技術(shù),如畫矩形時按一定的鍵可約束畫出正方形,畫橢圓時按住一定的鍵可約束畫圓等。8.4交互式圖形程序庫OpenGL1.OpenGL的API結(jié)構(gòu)圖8.24(a)是Win32平臺上OpenGLAPI的結(jié)構(gòu)簡圖;圖8.24(b)是UNIX平臺上OpenGLAPI的結(jié)構(gòu)簡圖。其中“OpenGL”表示OpenGL基本API,這類API的主要功能包括形體描述、平移、旋轉(zhuǎn)、縮放、光照、紋理、材質(zhì)、像素、位圖和文字處理等。圖8.24OpenGLAPI結(jié)構(gòu)圖(a)Win32OpenGLAPI;(b)UNIXOpenGLAPI2.OpenGL的工作順序

OpenGL的工作順序就是一個從定義幾何要素到把像素段寫入幀緩沖區(qū)的過程。在屏幕上顯示圖形的主要步驟是以下三步:(1)構(gòu)造幾何要素(點、線、多邊形、圖像、位圖),創(chuàng)建對象的數(shù)學(xué)描述,在三維空間上放置對象,選擇有利的場景觀察點。(2)計算對象的顏色,這些顏色可能直接定義,或由光照條件及紋理間接給出。(3)光柵化,把對象的數(shù)學(xué)描述和顏色信息轉(zhuǎn)換到屏幕的像素。3.OpenGL的基本語法常用的程序設(shè)計語言,如C、C++、Pascal、Fortran和Java等,都支持OpenGL的開發(fā)。這里只討論C語言下OpenGL的語法。4.狀態(tài)機(jī)制

OpenGL的工作方式是一種狀態(tài)機(jī)制,它可以進(jìn)行各種狀態(tài)或模式設(shè)置,這些狀態(tài)或模式在重新改變它們之前一直有效。

5.程序的基本結(jié)構(gòu)

OpenGL程序的基本結(jié)構(gòu)可分為三個部分:第一部分是初始化部分。主要是設(shè)置一些OpenGL的狀態(tài)開關(guān),如顏色模式選擇,是否作光照處理(若有的話,還需設(shè)置光源的特性)、深度檢驗、裁剪等。這些狀態(tài)一般都用函數(shù)glEnable(???)和glDisable(???)來設(shè)置,其中“???”表示特定的狀態(tài)。第二部分設(shè)置觀察坐標(biāo)系下的取景模式和取景框的位置及大小。主要利用了三個函數(shù):(1)函數(shù)voidglViewport(left,top,right,bottom),設(shè)置在屏幕上的窗口大小,四個參數(shù)描述屏幕窗口四個角上的坐標(biāo)(以像素表示);(2)函數(shù)voidglOrtho(left,right,bottom,top,near,far),設(shè)置投影方式為正交投影(平行投影),其取景體積是一個各面均為矩形的六面體;(3)函數(shù)voidgluPerspective(fovy,aspect,zNear,zFar),設(shè)置投影方式為透視投影,其取景體積是一個截頭錐體。第三部分是OpenGL的主要部分,使用OpenGL的庫函數(shù)構(gòu)造幾何物體對象的數(shù)學(xué)描述,包括點線面的位置和拓?fù)潢P(guān)系、幾何變換、光照處理等。6.OpenGL有關(guān)的庫

OpenGL本身是一個低層庫,但在編程實踐中還需要一些能簡化編程任務(wù)、易于在窗口系統(tǒng)上執(zhí)行的高層庫。SGI建立了四個庫:前兩個庫對各種OpenGL實現(xiàn)都提供,第三個庫是專為OenGLProgrammingGuide編寫的輔助庫,第四個庫是在OpenGL之上開發(fā)的獨立產(chǎn)品。(1)OpenGL實用庫(GLU)。(2)OpenGL的Windows系統(tǒng)擴(kuò)充(GLX)。(3)OpenGLProgrammingGuide輔助庫(AuxiliaryLibrary)。8.4.2利用OpenGL繪制基本幾何對象1.繪圖準(zhǔn)備和結(jié)束在開始繪制新圖形前,計算機(jī)屏幕上可能已有一些圖形,OpenGL在顯示緩沖區(qū)中存儲了那些圖形的繪圖信息。繪制新的圖形以前,應(yīng)當(dāng)清除當(dāng)前的這些內(nèi)容,以免影響繪圖的效果??捎萌缦潞瘮?shù)準(zhǔn)備繪圖工作:(1)voidglClearColor(red,green,blue,alpha),

給當(dāng)前屏幕的背景設(shè)置顏色,red、green、blue、alpha為RGBA顏色值,(2)voidglClear(mask),清除緩沖區(qū),可以清除的緩沖區(qū)如表8-1所示。表8-1可清除的緩沖區(qū)繪制完圖形后,需要使用兩個函數(shù)來結(jié)束繪圖并返回:(1)voidglFlush(),

強(qiáng)制OpenGL命令序列在有限的時間內(nèi)完成執(zhí)行;(2)voidglFinish(),

完成全部OpenGL命令的執(zhí)行,即等到全部命令結(jié)束后才返回。2.繪制OpenGL的基本幾何元素

OpenGL的幾何要素有點、線、多邊形。OpenGL中的點是三維的,用戶設(shè)定二維坐標(biāo)(x,y)時,z自動置0;線是用一系列相連的點定義的;多邊形是一個封閉的線段集合。通過選擇屬性,既可以得到填充的多邊形,也可以是輪廓線,或是一系列點。表8-2mode的取值例如,下列程序定義如圖8.25所示的圖形。

glBegin(GL-POLYGON);glVertex2f(0.0,0.0);glVertex2f(0.0,3.0);glVertex2f(3.0,3.0);glVertex2f(4.0,1.5);glVertex2f(3.0,0.0);

glEnd();圖8.25繪多邊形或一組點3.設(shè)置幾何要素的屬性1)點屬性

voidglPointSize(Glfloatsize)用于設(shè)置點屬性,它以像素為單位設(shè)置點的寬度。Size參數(shù)指定點的寬度,它必須大于0,缺省值為1.0。2)線屬性

voidglLineWidth(Glfloatwidth)函數(shù)以像素為單位設(shè)置繪制線的寬度。繪制線時的反走樣處理與點的處理一樣。3)多邊形屬性通常多邊形用實模式填充,但也可以指定某種點畫模式(圖案)來填充。多邊形也存在反走樣,而且較點和線更復(fù)雜。4)控制多邊形繪制及法向量多邊形的繪制通常是在多邊形閉合邊界內(nèi)填充全部圖像,但也可以只繪多邊形邊框,或只繪多邊形頂點。由于多邊形面存在正面和背面,因此需要控制反轉(zhuǎn)多邊形面和剔除不繪的面。8.4.3基于OpenGL真實感圖形生成技術(shù)簡介應(yīng)用OpenGL基本幾何元素,結(jié)合其幾何變換等功能便可生成各種復(fù)雜的線框(Wireframe)物體。但線框物體能反應(yīng)物體的結(jié)構(gòu),不能反應(yīng)物體的表面細(xì)節(jié),有必要對構(gòu)成物體的各個表面進(jìn)行填充以形成實體。1.OpenGL的顏色模型

OpenGL可以采用RGB顏色模型。紅、綠、藍(lán)三原色疊加在一起產(chǎn)生復(fù)合色。2.OpenGL光照

OpenGL除了可以管理環(huán)境光、漫反射光和鏡面反射光以外,還可以管理輻射光。輻射光可以用來模擬自體發(fā)光的物體,如燈泡等,以產(chǎn)生特殊效果。表8-3OpenGL光源類型常量3.物體的材質(zhì)類似于OpenGL中的光照,用GLfloat型的數(shù)組來定義一種材質(zhì),如:

GLfloatm-materialAmb[4]={0.2f,0.2f,0.2f,1.0f};

Glfloatm-materialDif[4]={0.8f,0.0f,0.0f,1.0f};

GLfloatm-materialSpe[4]={1.0f,1.0f,1.0f,1.0f};

GLfloatm-matShininess=10.0f;

每個數(shù)組的前三個元素依次說明了物體對紅光、綠光、藍(lán)光的反射率。比如m-materialDif[]數(shù)組定義了該材質(zhì)只反射紅光,而不反射綠光和藍(lán)光。數(shù)組的第四個元素反應(yīng)材質(zhì)的透明度。m-matShininess變量則定義物體的光度。在定義了材質(zhì)的基本屬性后,也應(yīng)該把這些屬性通知給OpenGL,如下所示:

glMaterialfv(GL-FRONT,GL-AMBIENT,m-materialAmb);

glMaterialfv(GL-FRONT,GL-DIFFUSE,m-materialDif);

glMaterialfv(GL-FRONT,GL-SPECULA,m-materialSpe);

glMaterialfv(GL-FRONT,GL-SHININESS,m-matShininess);

glMaterialfv()函數(shù)有三個參數(shù),第一個參數(shù)指定要定義的多邊形的面,有三個可選常量:GL-FRONT、GL-BACK和GL-FRONT-AND-BACK,分別說明的是多邊形的前面、后面或前后雙面。第二個參數(shù)也是一個OpenGL常量,它告訴OpenGL定義材質(zhì)的哪一個屬性,如表8-4所示。第三個參數(shù)是一個數(shù)組地址,該數(shù)組也是一個齊次坐標(biāo)向量。表8-4OpenGL材質(zhì)類型常量4.物體的明暗處理

OpenGL可以對場景中的物體進(jìn)行平面明暗著色處理和光滑明暗著色處理。其實現(xiàn)函數(shù)為glShadeModel(),常用如下兩種形式:

glShadeModel(GL-FLAT);

glShadeModel(GL-SMOOTH);5.深度測試為了正確地進(jìn)行消隱,OpenGL必須知道各個物體間的相對位置關(guān)系,因此,必須進(jìn)行深度測試。OpenGL中通過對深度緩存進(jìn)行操作來完成深度測試,常用的深度緩存操作有:清除深度緩存:

glClear(GL-DEPTH-BUFFER-BIT);

設(shè)置深度緩存:glClearDepth(1.0);屏蔽深度緩存:

glDepthMask(GL-TRUE);//允許寫深度緩存

glDepthMask(GL-FALSE);//禁止寫深度緩存啟動和關(guān)閉深度緩存:

glEnable(GL-DEPTH-TEST);

glDisable(GL-DEPTH-TEST);確定測試條件:glDepthFunc(GL-LESS);確定深度緩存深度范圍:glDepthRange(GLclampdzNear,GLclampdzFar)。6.光照模型

OpenGL通過glLightModel()函數(shù)近似模擬光照,該函數(shù)的第一個參數(shù)為一個OpenGL常量,只能取如下三者之一:

GL-LIGHT-MODEL-AMBIENT;GL-LIGHT-MODEL-LOCAL-VIEWER;

GL-LIGHT-MODEL-TWO-SIDE。1)全局環(huán)境光全局環(huán)境光不來自于任何指定的光源,就好像環(huán)境本身就是這種光。下面的語句可以為整個場景提供一盞環(huán)境光。2)鏡面高光鏡面高光與光源的鏡面反射光、材質(zhì)的鏡面反射率、物體表面的位置以及視點的位置有關(guān)。3)雙面光照

OpenGL既支持單面光照也支持雙面光照。單面光照時,只取表面的指定面的材質(zhì)屬性進(jìn)行光照計算。

7.聚光與點光源和無限光源相比,聚光更具有藝術(shù)表現(xiàn)力。劇場多采用聚光,手電筒發(fā)出的光便是聚光。8.5構(gòu)造一個簡單的交互式圖形系統(tǒng)8.5.1交互式

溫馨提示

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

評論

0/150

提交評論