




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本文格式為Word版,下載可任意編輯——計算機圖形學實習報告實
習
報
告
實習名稱:
計算機圖形學實習
班
級:
學
號:
姓
名:
實習地點:
實習指導教師:
實習時間:
年
月
日至
月
日一、實習目的與意義本次計算機圖形學的實習分兩部分,一部分就是利用AutoCAD進行二維與三維模型的制作,另一部分就是利用VC6、0進行編程實現對圖形的簡單操作。通過對AutoCAD的實習,熟悉該軟件的基本功能及操作特點,把握二維及三維圖形的基本制作過程。通過對VC6、0的編程實習,理解圖形的生成、圖形的變換、圖形的顯示以及二維裁剪的基本思想,熟練把握計算機圖形學的基本原理與方法;熟練把握計算機圖形學算法的實現算法;學習與把握圖形系統的設計;學習用VC++編寫計算機圖形學程序;建立面向對象編程的基本概念。
二、實習主要內容
1、AutoCAD軟件操作
(1)簡單圖形繪制
(2)圖形的基本編輯命令操作
(3)標注文字及填充
(4)三維圖形繪制
2、基于VC6、0下的計算機圖形學程序編寫(1)圖形的生成:畫直線、畫圓、畫曲線、畫字符(2)圖形的變換:平移、旋轉、縮放、對稱變換(3)圖形的顯示:掃描線填充、邊緣填充、種子填充(4)圖形的二維裁剪:CS裁剪、多邊形裁剪、梁友棟裁剪、圓裁剪、中點分割法三、實習的主要過程
第一部分AutoCAD軟件操作
AutoCAD軟件可以處理好多問題,在機械制圖,土木建筑等方面有著廣泛的應用,我們在機房開啟AutoCAD軟件對其進行系統配置,然后進行具體操作。通過配置可以實現工具欄之類的快捷運用。
(1)簡單圖形繪制實習開始的第一天,在老師的講解以及演示下,我們了解了AutoCAD軟件的基本使用方法,與此同時,我們跟著老師的操作也漸漸熟悉了該軟件的一些基本操作方法。
從設置基本繪圖環境開始,依照指導書上的指示,采用邊完成簡單圖形邊學習各種命令的方式,漸漸熟練把握了AutoCAD的使用,熟練把握了其基本繪圖功能,如把握了繪圖命令POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE
的功能及操作;把握了實體繪圖命令鍵盤輸入的方法;把握了縮放命令(ZOOM)的使用方法等。
由于指導書的例子有詳盡的操作過程,所以對以上功能的使用方法的把握對比快。通過完成例子把握了她們的使用方法,接著完成其她的練習達到了穩定的目的。
以下通過一些例子來說明對以上繪圖功能的使用:例一:基本環境設置a:在命令中輸入limits,確定相應的繪圖區域大小b:在命令中輸入zoom,選擇A(全部),讓畫布全部充滿屏幕。
c:下來進行基本的畫圖操作,譬如line、pline、point、circle、polygon等,把握了這些基本的畫圖操作。
例二:通過pline直接實現對輪廓的繪制,circle實現對圓的繪制,繪制前仍需設置圖幅大小。對于軸對稱的圖形我們可以只繪出圖形的一半,然后通過mirror鏡像操作實現。再繪制的過程中,我們可以采用相對坐標與極坐標來實現簡單定位,避免了計算的麻煩。
繪制以上的圖形時,可以采用pline繪制出外圍輪廓,然后再繪制兩個圓的方法,也可以采用鏡像的方法來實現,從而節省時間。
例三:繪制五角星時采用采用端點捕獲畫線的方法,采用solid填充區域。
例四:通過輔助線實現圖形的簡單繪制。
通過以下的圖形操作穩定并熟練了圖形的簡單繪制的方法。
(2)圖形的基本編輯命令操作我們在繪制繁雜圖形的時候需要采用一些基本編輯命令操作,如復制、對稱、旋轉、剪切、圓的公切線、公切圓等操作,能過快速的繪制出圖形。對于繁雜的圖形,還需要我們能敏銳的發現圖形各部分間的相關關系,才能快速而確切的繪制出圖形,這就要求我們要多練習,熟練把握基本操作,才能快速繪制對比繁雜的圖形。
在圖形的編輯欄中有刪除、復制、鏡像(MIRROR)、偏移、陣列、旋轉、修剪等操作,我們可以通過這些操作,來繪制繁雜圖形。
例一:鏡像操作、倒角處理
繪制以上圖形時,先用pline繪制出上半部分的輪廓線,接著對左右兩端進行倒角處理,并補豎線,然后通過mirror鏡像操作繪制另一半圖形。最終繪制腰圓圖形,通過復制,偏移等操作繪制出上圖。
例二:通過circle操作,畫出兩個圓的公切圓,通過trim修剪得到以下圖形
例三:
繪制以上圖形時,需要先對圖形進行研究,分析圖上標注的含義,確定輔助線的位置,恢復被裁剪掉的圖形便利繪制圖形。通過這幅圖的練習,讓我們明白繪制一些繁雜圖形時,往往無法直接繪制出來,需要我們通過研究圖形找到輔助線才能快速又確切的繪制出圖形。
通過以下的圖形繪制更加熟練的學會了構造輔助線,通過圖形基本編輯命令操作來實現繁雜圖形的繪制。
(3)標注文字及填充標注能夠幫助我們檢驗所畫圖形就是否符合標準,所以繪制后的圖形還需要進行標注,在標注時,要建立不同的圖層,在進行標注時,要根據實際不同的狀況建立不同的標注樣式,進行圖形的標注。以上的圖形都進行了標注。
圖形填充例子:以下兩個圖形綜合了前面的知識,同時參與了圖形的填充,圖形的繪制過程對比繁雜,且需要借助相應的輔助線進行繪圖。
以下兩個手柄圖就是對前面所學知識的匯總,需要熟練把握基本圖形繪制方法、編輯命令操作與輔助線的構建。
(4)三維圖形繪制由于實習期間有較多科目的考試,三維圖形的練習在CAD考核之前并沒有做過,只就是在考核的時候進行了三維圖形的繪制,由于沒有經過三維圖形練習,對三維圖形的繪制不熟悉,沒能在規定時間內完成三維圖形的繪制。在進行編程實習期間,才將三維圖形的繪制給補了回來。
其次部分基于VC6、0下的計算機圖形學程序編寫本次的編程實習采用面向對象編程,通過MFC來編程,實現可視化操作。
1、創立工程后,對菜單欄進行修改,用鼠標右鍵點擊菜單中的空格,在出現的下拉菜單中點擊最終一項"屬性',出現
"MenuItemProperties'窗口;
在窗口中"標題'欄輸入"圖形生成',建立主菜單項"圖形生成',同理建立"圖形變換',"圖形顯示'"二維裁剪'的菜單項,并在其下拉選項中添加相應操作。修改后的菜單如下圖所示:
2、鼠標坐標顯示
為了準確定點,必需知道當前坐標,因此必需為操提醒鼠標坐標。準備將坐標顯示在應用程序窗口的右下腳。在自動生成的工程中,窗口的右下腳處原就是用來顯示鍵盤按鍵信息的(如下左圖所示),現改為顯示鼠標坐標(如下右圖所示)。
3.畫直線、圓、曲線、字符、顏色設置(1)直線:分為DDA直線、中點直線下面以DDA直線為例,說明如何創立菜單響應函數。已經創立了DDA直線菜單,菜單響應程序如下步驟:開啟工程工程,依次點擊菜單"查瞧'、"建立類向導',出現如下窗口(如下圖),也可以用Ctrl+W開啟類向導。在ClassName:欄中選CMy2View(即
菜單響應程序放在視圖類中);在ObjectIds:欄中選ID_DRAW_DDALINE;在Messages:欄中選COMMAND;點擊AddFunction按鍵,出現函數命名窗口,點擊該窗口中的OK按鍵,該函數在2View、cpp中生成。點擊該窗口中的EditCode按鍵查瞧、編輯該函數。
具體實現:DDA直線的程序實現如下:首先編寫菜單響應函數,對MenuID與PressNum兩個變量賦初值;接下來建立相應的鼠標響應程序框架,DDA直線要求第一次點鼠標左鍵確定起始點,其次次點鼠標左鍵確定直線終止點,并畫出直線,中間利用橡皮筋技術實時顯示直線的外形,完成直線繪畫后,還要將橡皮筋舊線擦除。
中點畫線算法實現過程與DDA算法大致一致,但就是其思想更加合理,更有利于硬件實現,提高了算法效率,程序實現同DDA大同小異,只就是DOC、cpp中核心算法不同而已,中點畫線法采用交點與中點差對比得判定。其算法的中心
思想一致,即在坐標系的網格中,確定起始點后,再根據其不同的判斷方法,取得離直線最近的像素點予以著色,用離散的點表示出所要直線。
上圖中紅線為DDA直線,黑線為中點直線(2)曲線:曲線分為Brezier曲線、B樣條曲線與Hermite曲線。均就是由鼠標左鍵確定主要拐點,按右鍵確定選點已完成并進行曲線繪制,雙擊左鍵消除十字絲完成曲線繪制。
Bezier曲線就是由一群操縱點決定的。一段曲線的次數與操縱點的點數密切相關,人們往往使用三次曲線,那么一段曲線的操縱點的點數為4。實際應用中,一條Bezier曲線就是由多段Bezier曲線首尾相連而成。與之相應,一群操縱點劃分成多組操縱點,每一組操縱一段曲線的外形。為了使每一段曲線平滑地連接起來,要求前一組最終一個操縱點與后一組第一個操縱點一致(即共用一個點),同時要求前一組倒數其次個操縱點、最終一個操縱點(即后一組第一個操縱點)、后一組其次個操縱點等三個操縱點在一條直線上。假如要求給出的操縱點在相鄰的組之間都能滿足這種要求,那么操縱點的布點工作將受到極大的限制。這種要求不僅難以滿足,而且靈活性被極大地減弱。解決的方法就
是計算得出連接點,即用前一組的倒數其次點與后一組的其次點連線的中點作為相鄰兩段曲線操縱點的終點與起點。
Bezier曲線的操作這樣安排:用鼠標左鍵進行操縱點選點,右鍵終止選操縱點,顯示一條Bezier曲線;再按左鍵選取一個操縱點進行移動修改,右鍵終止一個操縱點修改;當所有的修改完成以后,雙擊左鍵生成一條正式的Bezier曲線。因此首次布點與修改操縱點位置,對鼠標的操作要求不同,必需區分開。
B樣條曲線與Hemite曲線的操作安排與Bezier曲線的操作安排一致,只就是DOC、cpp中的核心算法不同而已。
上圖中,黑色為Bezier曲線,紅色為B樣條曲線,綠色為Hemite曲線(3)圓:圓分為Bresenham圓、正負法圓。
Bresenham圓的程序實現如下:由鼠標左鍵確定圓心,再定一點,使其與第一點的連線長度成為半徑進行圓的繪制。先為Bresenham圓添加菜單響應函數確定MenuID,然后畫圓的OnLButtonDown()響應:用鼠標確定圓心,再移動鼠標確
定半徑。在確定半徑時,隨著鼠標的移動,一個圓隨著鼠標的移動半徑發生變化。然后調用Bresanham算法完成圓的繪制。Bresenham圓的編程實現如下:首先編寫菜單響應函數,對MenuID與PressNum兩個變量賦初值;接下來建立相應的鼠標響應程序框架,Bresenham圓要求第一次點鼠標左鍵確定圓心,其次次點鼠標左鍵確定圓上一點,并由此確定半徑,畫出完整的圓;然后再在Doc、h頭文件中聲明必要變量與函數,并在Doc、cpp中完成Bresenham圓的生成數。正負畫圓法的編程實現與Bresenham圓的相類似。
上圖中紅色為Bresenham圓,綠色為正負法畫圓法(4)字符:字符的表示有點陣表示與矢量表示兩種。點陣表示指每個字符都有若干個點表示,矢量表示記錄的就是筆畫信息。可先通過調用MFC對話框對字的字體、粗細、大小進行調整,再點擊文本,輸入文本位置的其實坐標以及文本內容,相應文本內容則可出現在指定位置。
(5)顏色設置:使用了MFC中的CcolorDialog類,該類就是MS設計的專門用于顏色選擇的對話框類:classCcolorDialog:publicCCommonDialog。
4、圖形顯示:掃描線填充算法、邊緣填充、種子填充
掃描線填充算法運用了繁雜的數據結構,且在填充過程中需要反復排序,編程難度較大。
VC類庫中的函數CDC::Polygon()實現了掃描線填充算法功
能。實際上我們所學的計算機圖形學所有算法都能通過引用VC類庫提供的函數(或函數組合)加以實現。
邊緣填充實質就是以邊緣與掃描線的交點為起點以"異或'的方式向右邊最遠點畫點。假如一個像素經過偶數次異或畫點,將還原為背景顏色;而經過奇數次異或畫點的像素將顯示畫點顏色與背景顏色經過異或運算混合的顏色。所有的邊緣都處理完后,多邊形內部像素確定經過了奇數次異或畫點,因而顯示畫點顏色與背景顏色異或運算混合顏色;多邊形外部像素確定經過了偶數次異或畫點,因而還原為背景顏色。
種子填充的原理就是從堆棧中取出一粒表示區域內部的種子,從種子點出發,沿掃描線分別向左向右邊填充邊尋覓邊界點;通過左右兩邊的邊界點確定掃描線上的填充區域范圍;根據該范圍在上下相鄰的兩條掃描線上尋覓新的未填充區域,每個區域中選一粒種子壓入堆棧。這就是一個最基本的填充步驟,整個區域的填充過程就就是這個步驟的反復循環使用。
三種算法中,種子填充算法的填充效果時間花費多,有些象素會入棧屢屢,降低算法效率;棧結構占空間。遞歸執行,算法簡單,但效率不高,區域內每一象素都引起一次遞歸,進出棧,費時費內存。邊緣填充算法程序與數據結構都很簡單,對于繁雜圖形,每一象素可能被訪問屢屢,但由于涉及到對幀緩沖器中大量元素的屢屢賦值,影響了算法的效率。掃描線算法效率高,但數據結構繁雜,編程難度大,填充的過程中需要反復排序,對各種表的維持與排序開銷太大,適合軟件實現而不適合硬件實現。
上圖中,黑色為掃描線填充,紅色為邊緣填充,綠色為種子填充5、圖形裁剪
圖形裁剪包括Cohen-Sutherland算法、中點分割算法、梁友棟算法、多邊形裁剪與圓裁剪。
(1)Cohen-Sutherland算法將窗口平面劃分成九個區域,每個區域給予不同的編碼。根據線段端點落入不同的區域,給予線段端點不同的編碼。基于線段端點編碼,算法給出了一整套裁剪的方法。在裁剪過程中,窗口的參數需要屢屢使用,線段端點需要屢屢編碼,編碼的計算需要屢屢與某些常數相"與'。為了便利,將窗口參數與幾個常數定義為幾個常數符號,將端點編碼用一個函數實現。為了將精力集中在裁剪的實現上,事先規定一個窗口。操作時,任意輸入直線段,用該窗口對直線段進行裁剪。
(2)多邊形裁剪不同于直線裁剪,就是用窗口對一個多邊形進行裁剪,其結果還就是一個多邊形。多邊形常用一個記錄頂點的數組表示,最終的裁剪結果仍存放在數組中。本節采用Sutherland-Hodgman算法對多邊形進行裁剪,該算法依次使用窗口四條邊對多邊形進行裁剪。四條邊的裁剪原理一致,但參數略
有不同,它們就是編程實現的重點。為了使程序結構合理、易讀,將邊的裁剪部分用一個函數實現。
(3)圓裁剪與直線裁剪與多邊形裁剪都不一樣,直線裁剪完還就是直線,多邊形裁剪完還就是多邊形,而圓裁剪完便有可能不再就是圓,所以我們需要修改圓的生成算法,讓其能夠自主判斷就是否在矩形框內,若就是,則繪出該點像素,若不就是,則不繪。
上圖中紅色為Cohen-Sutherland裁剪,綠色為圓裁剪,黑色為多邊形裁剪6、圖形的幾何變換
圖形的幾何變換分為平移、旋轉、縮放與對稱變換功能平移:點擊相應的平移操作,屏幕中會出現一個小正方形,單擊鼠標左鍵,再根據橡皮筋拉伸,后單擊鼠標左鍵以確定平移量來進行圖像的平移操作。
旋轉:點擊相應的旋轉操作,屏幕中會出現一個小正方形,單擊鼠標左鍵,再根據橡皮筋拉伸,后單擊鼠標左鍵以確定旋轉角度來進行圖像的旋轉操作。
縮放:點擊相應的縮放操作,屏幕中會出現一個小正方形,單擊鼠標左鍵,再根據橡皮筋拉伸,后單擊鼠標左鍵以確定縮放比例來進行圖像的縮放操作。
對稱:點擊相應的對稱變換操作,屏幕中會出現一個小正方形,單擊鼠標左鍵,再根據橡皮筋拉伸,后單擊鼠標左鍵以確定對稱軸來進行圖像的對稱變換。
平移:
旋轉:
縮放:
對稱:四、實習的主要體會
AutoDCAD心得體會
實習的第一周進行的就是AutoCAD的實習,在老師的講解以及演示下,我漸漸的了解了AutuCAD的基本使用方法,跟著老師的演示過程學會了該軟件的基本操作流程。對于AutoCAD的基本繪圖功能的實現,我根據指導書的指導,采用邊完成簡單圖形邊學習各種命令的方式,漸漸熟練把握了AutoCAD的基本繪圖功能的使用。熟練把握了其基本繪圖功能,如把握了繪圖命令POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE的功能及操作;把握了實體繪圖命令鍵盤輸入的方法;把握了縮放命令(ZOOM)的使用方法等。
由于指導書上的的操作內容很詳盡,所以在繪制前面那些對比基礎的圖形時沒有遇到什么困難,通過前面一些基本的圖形的繪制,我漸漸熟悉了利用
AutoCAD進行簡單圖形的繪制,把握了基本繪圖命令,感覺CAD的操作并不難,很簡單上手,但還就是有需要特別注意的地方,譬如在繪圖之前最好先設置好繪圖區域界限,并使圖幅圖幅布滿整個屏幕,這樣能夠避免圖形繪制后太小甚至瞧不見的狀況;在繪圖的過程中,要注意建立圖層來畫出相應的輔助線,有助于圖像的生成,在標記的過程中,要根據實際狀況,建立不同的標注樣式。
隨著實習的深入,漸漸從剛開始的畫直線、圓、弧的基本操作轉到后來的公切圓、公切線以及對圖形進行編輯,開始進行繁雜圖形的繪制,就感覺自己的練習還遠遠不夠,不能對比快速的繪制出圖形,有時會由于沒有找到相關圖形的關系而浪費太多時間,甚至通過計算來確定她們的關系,這說明我平日的練習還不足夠,由于AutoCAD的就是使用就是不需要太多的計算的,只需要建立相關的輔助線,然后通過圖形的編輯命令就可以快速且確切的繪制出來。譬如用TRIM對圖形進行裁剪,用MIRROR對圖像進行鏡面對稱,都可以大大節省我們的畫圖時間,還可以采用陣列操作很便利的畫出某些圖形,譬如銑刀的繪制,假如不采用陣列的操作,繪制起來會特別麻煩,但就是經過陣列操作后,就能快速而確切的繪制出圖形。
由于平日沒有進行過三維圖形的繪制練習,在考核時沒能在規定時間內完成三維圖形,考核之后才將三維圖形的練習給繪制出來,這也充分說明我學習的知識還不足夠,要想充分把握AutoCAD的使用技巧,絕不僅僅靠這一周的實習就能夠把握的,還需要我在今后的學習生活中多加練習,才能把握好該軟件。
經過這一周的練習,我還就是把握了一些關于AutuCAD軟件操作的方法,對于圖形的繪制也有了更深的理解,這次的實習也讓我總結了不少繪圖的經驗,當我們拿到一幅圖要進行繪制時,需要先分析圖形的鏈接狀況,各部分的關系,再
進行圖形的繪制。作為遙感專業的學生,以后還就是會有好多機遇跟圖形繪制打交道的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 呼吸科常用氣霧劑的使用方法及注意事項課件
- 急診急救藥品的管理
- 素描基礎概述
- 直播行業年終述職報告
- 2025年03月中央司法警官學院(26人)筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 青浦區玻璃鋼假山施工方案
- 個性化醫療法規-全面剖析
- 物聯網技術演進-全面剖析
- 體驗經濟下的品牌價值重構-全面剖析
- 2024年九月《阿房宮賦》文學意象關聯網絡
- 江蘇徐州市深地科學與工程云龍湖實驗室社會招考聘用9人模擬試卷【附答案解析】
- 土方回填施工記錄表
- 植物根莖葉課件
- 反生產行為講稿
- 施工現場消防安全技術交底
- 冀教版二年級語文下冊看圖寫話專項加深練習題含答案
- 焊接工藝評定及焊接工藝技術評定管理標準
- 洗衣房各崗位工作流程
- 基于SWOT分析的義烏市現代物流業發展研究
- 基于自適應濾波對音頻信號的處理詳解
- 油浸式變壓器工藝文件匯編
評論
0/150
提交評論