第5章交互式技術01413_第1頁
第5章交互式技術01413_第2頁
第5章交互式技術01413_第3頁
第5章交互式技術01413_第4頁
第5章交互式技術01413_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本章主要內容 常用的交互技術 交互技術的實現(xiàn)(鼠標繪圖) 二維圖形技術綜合應用 l 什么是交互技術? 指使用輸入設備進行輸入的技術。作用:交互式繪圖主要內容:q 交互設備q 交互任務q 基本交互技術(如橡皮筋技術)的實現(xiàn)交互式繪圖 設計者在操作計算機系統(tǒng)繪圖時,人與計算機之間進行信息交換,從而完成復雜的繪圖任務。需要:交互式技術 常見系統(tǒng): autocad 、photoshop、3dmax (視景仿真) creator、vega交互技術、交互設備、交互任務三者關系 用戶交互界面系統(tǒng)程序員圖形庫交互設備交互設備交互技術交互技術交互技術交互技術交互任務交互任務 圖形輸入設備的邏輯分類名稱名稱基本功

2、能基本功能定位設備(locator)指定一個點的坐標位置(x,y)筆劃設備(stroke)指定一系列點的坐標數(shù)值設備(valuator)輸入一個整數(shù)或實數(shù)字符串設備(string)輸入一串字符選擇設備(choice)選擇某個菜單項拾取設備(pick)選擇顯示著的圖形的組成部分輸入控制請求模式(request mode) 輸入設備在應用程序的控制下工作,程序在輸入請求發(fā)出后一直被置于等待狀態(tài),直到數(shù)據輸入。取樣模式(sample mode ) 應用程序與輸入設備同時工作,當輸入設備工作時,存儲輸入數(shù)據,并不斷更新當前數(shù)據,當程序要求輸入時,程序采用當前數(shù)據值。事件模式(event mode )

3、每次用戶對輸入設備的一次操作以及形成的數(shù)據稱為一個事件(event),事件按先后順序排成隊列,先進先出,設備被設置為事件方式,程序與設備同時工作。5.1 常用的交互技術常用的交互技術一個交互圖形系統(tǒng)或圖形應用程序,必須允許用戶動態(tài)的輸入坐標,一個交互圖形系統(tǒng)或圖形應用程序,必須允許用戶動態(tài)的輸入坐標,指定選擇功能,拾取操作對象,設置變換坐標,以及在圖形顯示時對指定選擇功能,拾取操作對象,設置變換坐標,以及在圖形顯示時對圖形的局部進行修改(例如平移、旋轉、縮放等比例變換)、刪除等圖形的局部進行修改(例如平移、旋轉、縮放等比例變換)、刪除等操作。用戶還可以允許使用橡皮筋技術,拖動技術等交互技術來進

4、行操作。用戶還可以允許使用橡皮筋技術,拖動技術等交互技術來進行繪圖。這種交互繪圖方式完全區(qū)別于通過程序自動運行產生的繪圖方繪圖。這種交互繪圖方式完全區(qū)別于通過程序自動運行產生的繪圖方式。式。橡皮條技術橡皮條技術定位技術定位技術拖拽技術拖拽技術 定值技術定值技術 菜單技術菜單技術 柵格技術柵格技術 拾取技術拾取技術約束技術約束技術吸附技術(引力域)吸附技術(引力域)插入符號、回顯功能插入符號、回顯功能直線、圓、矩形橡皮筋直線、圓、矩形橡皮筋5.1 常用的交互技術常用的交互技術 定位技術定位技術 5.1 常用的交互技術常用的交互技術用來給應用程序指定位置坐標(x,y)或(x,y,z)。完成此任務一

5、般情況下可采取兩種方法,q 其一,用鼠標移動屏幕上的光標到滿意的位置, 然后按一下鼠標左鍵;q 其二,用鍵盤直接輸入滿意的位置坐標。q 另外,還可以將這些技術混合在一起作用,5.1.1 定位技術定位技術5.1.1 定位技術定位技術定位是圖形輸入和圖形操作時常用的輸入操作之一。定位有直接定位和間接定位兩種方式。 void cursor(int x,int y)setwritemode(xor_put);line(x+3,y,x-3,y);line(x,y-3,x,y+3); 鼠標等設備的相對移動控制光標定位(異或方式顯示光標)在屏幕指定位置畫一個十字光標:void cursor(int x,in

6、t y)5.1.2橡皮筋技術橡皮筋技術 定位操作有時依賴于環(huán)境。例如,在繪圖時,已經存在一個圓c和圓外一點a,現(xiàn)在要確定另外一點b,使兩點連線ab與圓c相切。這種點的確定可通過使用橡皮條技術而變得容易實現(xiàn)。用橡皮條技術定位(顯示線段用異或方式) 橡皮橡皮筋筋技術技術(續(xù)續(xù))橡皮筋技術圖例 5.1. 3 拖拽技術拖拽技術 拖曳技術被用于拼裝定位和其他一些操作(如布局操作)中去,以便使工作變得直觀、簡便、高效。 拖曳一個二極管符號 拖曳技術(a)按動按鈕選中圖形(b)移動光標,也移動圖形(c)圖形放好時按鈕停止圖5-2 利用拖曳技術進行圖形定位5.1.4 定值技術定值技術 定值輸入用于設置物體旋轉

7、的角度、縮放的比例因子等 刻度尺與比例尺 圓形刻度尺與比例尺 定值技術定值技術在交互過程中應用很多,而且是必不可少的。定值技術在交互過程中應用很多,而且是必不可少的。用戶經常需要輸入一個數(shù)值,指定一個數(shù)量,完成用戶經常需要輸入一個數(shù)值,指定一個數(shù)量,完成這種任務需要確定精度(單位),需要的設備是鍵這種任務需要確定精度(單位),需要的設備是鍵盤或電位計。定值技術有兩種:盤或電位計。定值技術有兩種:(1)鍵入數(shù)值;例如畫圓時,輸入半徑)鍵入數(shù)值;例如畫圓時,輸入半徑1.2等。等。(2)改變電位計阻值產生要求的數(shù)量,可以用模擬)改變電位計阻值產生要求的數(shù)量,可以用模擬的方式實現(xiàn)電位計功能。的方式實現(xiàn)

8、電位計功能。5.1.5 拾取技術拾取技術 在圖形系統(tǒng)的許多交互操作中,經常需要在一個分層 的對象結構或雖不分層但很復雜的對象結構中拾取一個基 本對象或一些基本對象的集合,然后對其施加某種操作 。拾取一個基本對象可以通過一些方法來實現(xiàn) : 指定名稱法 特征點法 外接矩形法 分類法 直接法 拾取技術拾取技術(續(xù)續(xù))拾取操作 5.1.6 約束技術約束技術方向約束: 如x、y方向上的約束(autocad中命令為autho)柵格約束:輸入點用離它最近的網格點位置坐標代替。 (autocad中命令為grid)(距離為10i,10j)柵格坐標: 10*(int(x+0.5)+5)/10 10*(int(y+

9、0.5)+5)/105.1.7 菜單技術菜單技術 菜單是一種很重要的交互技術,它可用于指定命令、 確定操作對象或選定屬性等多中選一的場合。 菜單的層次結構菜單的層次結構(單層次的、多層次的 ) 菜單的表示菜單的表示 (字符串方法、圖符方法和圖像方法 ) 菜單的顯示控制菜單的顯示控制 (固定式、彈出式 ) 菜單的選擇菜單的選擇 菜單可通過多種設備來選擇,如使用指點設備直 接選擇、使用方向鍵順序循環(huán)選擇、使用數(shù)字鍵指定 選擇或使用功能鍵對應選擇等。 5.1.8 網格網格(grid)與吸附與吸附(snap)技術技術有時要從某已有線段上的點或它的頂點開始繪制另一條線段或其他圖形,直接使用定位設備很難保

10、證選中點的重合性。吸附技術則可克服這種困難。 帶有引力場的線段 網格與吸附技術網格與吸附技術 網格化是幫助繪制整齊、精確圖形的一種技術。有時要從已有的某線段上的點或它的頂點開始繪制另一條線段或其他圖形,直接使用定位設備來定位很難保證其重合性。吸附技術可保證用戶在定位坐標時只能選擇網格上的點,而不能選擇網格之間的點,這樣就可以克服單純使用定位設備時無法保證準確性的困難。 5.2 cad(交互式圖形)系統(tǒng)分析 計算機圖形學繪圖基礎可以使用mfc類庫(任何時候可以調用win32函數(shù),最大程度地利用windows) 與繪圖有關的關鍵類 document存儲數(shù)據 view觀察窗口(ondraw()函數(shù):

11、“畫”的動作) mainframe application代表應用程序(用戶啟動應用程序時,windows交用應用程序框架內置的winmain函數(shù),尋找一個由cwinapp派生的全局構造的應用程序對象)圖形設備接口(graphic device interface :gdi) 管理: 圖形設備信息、坐標系和映射模式、繪圖當前狀態(tài)(畫筆、畫刷、顏色、字體)、繪圖具體操作(畫線、畫圓等) cgdiobject派生出的對象: cbitmap cbrush cpen crgn cfont cpalettevc中(繪圖應用程序)最重要的類 cdc(設備環(huán)境類) 功能:其成員函數(shù)可以用于對設備環(huán)境的操作、

12、繪圖工具的使用、gdi對象的選擇等。例: cdc *pdc; pdc -lineto(x,y);先構造一個cdc對象,然后能使用其成員函數(shù),并及時刪除(太多了,系統(tǒng)回在調試窗口中報錯)繪圖系統(tǒng)設計基本原則 結構層次化 通用性強、使用方便 處理速度快 程序容易:讀、查、改、移植、擴充圖形層次結構 一般物體可以分解為不同形體元素的集合,可分層表示:圖形子圖形床 床架床頭 分層分層復雜圖形復雜圖形-簡單圖形簡單圖形簡單cad繪圖軟件功能 基本功能 圖形繪制(點、線、多折線、圓/橢圓、圓弧) 顏色、線型改變 文本 圖形放大/縮?。ㄖ乩L) 編輯(刪除、復制、移動) 高級功能 redo/undo 圖層 三

13、維繪圖5.3 交互技術的實現(xiàn)(鼠標繪圖) 步驟如下:1) 新建一個mfc單文檔工程文件。2) 創(chuàng)建繪圖菜單,并添加3個子菜單。菜單標題菜單項標題菜單項id繪圖直線id_draw_line矩形id_draw_rect圓id_draw_circle3)利用classwizard為3個菜單項添加菜單響應函數(shù) 4)添加代碼/繪制直線void cdrawview:ondrawline() cdc *pdc=getdc();/獲得當前窗口的設備上下文pdc-moveto(100,100);/起點pdc-lineto(400,400);/終點/繪制矩形void cdrawview:ondrawrect()

14、cdc *pdc=getdc();pdc-rectangle(100,100,400,400);/繪制圓void cdrawview:ondrawcircle() cdc *pdc=getdc();pdc-ellipse(100,100,300,300);運行結果在視圖類頭文件中添加:/添加以下成員變量cpoint m_p1,m_p2;/起點和終點int m_drawcurrent; /當前繪圖對象在構造函數(shù)中初始化成員變量。cdrawview:cdrawview()m_drawcurrent=0;修改原繪圖代碼:/繪制直線void cdrawview:ondrawline() m_drawc

15、urrent=1;/直線/繪制矩形void cdrawview:ondrawrect() m_drawcurrent=2;/矩形/繪制圓void cdrawview:ondrawcircle() m_drawcurrent=3;/圓在onlbuttondown中添加如下代碼:void cdrawview:onlbuttondown(uint nflags, cpoint point) if(0=m_drawcurrent)return;/非繪圖狀態(tài)m_p1=point; /得到起點cview:onlbuttondown(nflags, point);在onlbuttonup中添加如下代碼#in

16、clude “math.h”void cdrawview:onlbuttonup(uint nflags, cpoint point) if(0=m_drawcurrent)return;m_p2=point;cdc *pdc=getdc();switch(m_drawcurrent) case 1:/直線pdc-moveto(m_p1);pdc-lineto(m_p2);break;case 2:/矩形pdc-rectangle(m_p1.x,m_p1.y,m_p2.x,m_p2.y);break;case 3:/圓 int r=(int)sqrt(m_p2.x-m_p1.x)*(m_p2.x-m_p1.x)+(m_p2.y-m_p1.y)*(m_p2.y-m_p1.y);/半徑半徑int x1,x2,y1,y2;x1=m_p1.x-r;y1=m_p1.y-r;x2=m_p1.x+r;y2=m_p1.y+r;pdc-ellipse(x1,y1,x2,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論