圖形學(xué)課程設(shè)計(jì)論文.doc_第1頁
圖形學(xué)課程設(shè)計(jì)論文.doc_第2頁
圖形學(xué)課程設(shè)計(jì)論文.doc_第3頁
圖形學(xué)課程設(shè)計(jì)論文.doc_第4頁
圖形學(xué)課程設(shè)計(jì)論文.doc_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

武漢理工大學(xué)武漢理工大學(xué) 課程論文課程論文 課課 程程 名名 稱稱 計(jì)算機(jī)圖形學(xué)基礎(chǔ)計(jì)算機(jī)圖形學(xué)基礎(chǔ) 開開 課課 學(xué)學(xué) 院院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 指導(dǎo)老師姓名指導(dǎo)老師姓名 學(xué)學(xué) 生生 姓姓 名名 學(xué)學(xué) 生生 學(xué)學(xué) 號(hào)號(hào) 學(xué)生專業(yè)班級(jí)學(xué)生專業(yè)班級(jí) 2010 2011 學(xué)年 第 2 學(xué)期 計(jì)算機(jī)圖形學(xué) 1 目錄目錄 計(jì)算機(jī)圖形學(xué)基礎(chǔ) 課設(shè)論文 2 1 課設(shè)要 求 2 2 程序的操作及功能說 明 2 3 各模塊的介 紹 2 3 1 坐標(biāo)建立 2 3 1 1 建立坐標(biāo)的基本思 想 2 3 1 2 建立坐標(biāo)的算 法 2 3 2 直線的繪 制 3 3 2 1 DDA 算法的實(shí) 現(xiàn) 3 3 2 2 中點(diǎn) Bresenham 算法的實(shí) 現(xiàn) 3 3 2 3 改進(jìn) Bresenham 算法畫 線 6 3 2 4 繪制圖形的對(duì)話 框 8 3 2 5 繪制直線的截 圖 9 3 3 圓的繪 制 計(jì)算機(jī)圖形學(xué) 2 10 3 3 1 八分法畫圓算法的實(shí) 現(xiàn) 10 3 3 2 Bresenham 算法畫 圓 10 3 3 3 繪制圖形的對(duì)話 框 11 3 3 4 繪制圓的截 圖 12 3 4 Bresenham 算法畫橢 圓 12 3 4 1Bresenham 橢圓算法的實(shí) 現(xiàn) 13 3 4 2 繪制圖形的對(duì)話 框 14 3 4 3 繪制橢圓的截 圖 14 3 5 二維圖形的變 換 14 3 5 1 平移變 換 15 3 5 2 比例變 換 16 3 5 3 對(duì)稱變 換 17 3 6清 屏 20 3 7關(guān)于作 者 20 4 個(gè)人小 計(jì)算機(jī)圖形學(xué) 3 結(jié) 21 4 1設(shè)計(jì)中遇到的問題及解決方 法 2 1 4 2還有一些問題沒有解 決 21 計(jì)算機(jī)圖形學(xué)基礎(chǔ) 課程論 文 22 計(jì)算機(jī)圖形學(xué)基礎(chǔ)計(jì)算機(jī)圖形學(xué)基礎(chǔ) 課設(shè)論文課設(shè)論文 1 1 課設(shè)要求 課設(shè)要求 1 給出系統(tǒng)框架 2 調(diào)用畫點(diǎn)的函數(shù) 分別用DDA 中點(diǎn)Bresenham算法和改進(jìn)Bresenham算法繪 制直線和中點(diǎn)算法繪制直線 用不同的算法繪制圓和橢圓 并各自比較算法精 度與效率的差別 3 實(shí)現(xiàn)二維圖形的變換 包括平移 放縮 旋轉(zhuǎn) 錯(cuò)切以及復(fù)合變換 4 運(yùn)用所學(xué)的多邊形掃描算法實(shí)現(xiàn)多邊形的掃描轉(zhuǎn)換 5 運(yùn)用所學(xué)的區(qū)域填充算法實(shí)現(xiàn)區(qū)域填充 6 運(yùn)用所學(xué)算法實(shí)現(xiàn)線段裁剪以及多邊形裁剪 多邊形裁剪為可選 7 自己實(shí)現(xiàn)其它附加以及需要完善的功能模塊 2 2 程序的操作及功能說明 程序的操作及功能說明 1 繪制直線 分別用 DDA 算法 中點(diǎn) Bresenham 算法 改進(jìn) Bresenham 算法畫 直線 2 繪制圓和橢圓 繪制圓 中點(diǎn)法畫圓和 Bresenham 法畫圓 Bresenham 法 畫橢圓 3 圖形的變換 平移變換 比例變換 對(duì)稱變換 關(guān)于 y 軸對(duì)稱 關(guān)于 x 軸對(duì) 計(jì)算機(jī)圖形學(xué) 4 稱 關(guān)于直線 y x 對(duì)稱 關(guān)于直線 y x 對(duì)稱 4 清屏 5 關(guān)于作者 3 3 各模塊的介紹各模塊的介紹 3 13 1 坐標(biāo)建立坐標(biāo)建立 1 1 建立坐標(biāo)的基本思想 建立坐標(biāo)的基本思想 在 MFC 中 系統(tǒng)默認(rèn)是以左上角作為坐標(biāo)的原點(diǎn) 并以向右和向下為 X 軸 Y 軸的正方向 而在進(jìn)行圖形繪制的過程中 需要以工作區(qū)的中心為原點(diǎn) 并 以向右和向上為 X 軸和 Y 軸的正方向 因而 需要運(yùn)用 MFC 中的映射模式來改 變程序的坐標(biāo) 其中映射模式中的 MM LOENGLISH 恰好符合所需要的要求 應(yīng)而 使用該模式來建立坐標(biāo) 2 2 建立坐標(biāo)的算法 建立坐標(biāo)的算法 CClientDC dc this CRect rc GetClientRect dc DPtoLP dc MoveTo 0 rc bottom 2 dc LineTo rc right rc bottom 2 dc MoveTo rc right 2 0 dc LineTo rc right 2 rc bottom dc SetMapMode MM LOENGLISH dc SetViewportOrg rc right 2 rc bottom 2 dc SetViewportExt rc right rc bottom dc SetWindowOrg 0 0 3 23 2 直線的繪制直線的繪制 直線的繪制算法有很多 下面就目前常用的 DDA 算法 中點(diǎn) Bresenham 算法 改進(jìn) Bresenham 算法進(jìn)行研究 3 2 1DDA3 2 1DDA 算法的實(shí)現(xiàn)算法的實(shí)現(xiàn) 1 1 DDADDA算法的算法的基本思想 基本思想 已知過端點(diǎn)P0 x0 y0 P1 x1 y1 的直線段L y kx b 直線斜率為 k y1 y0 x1 x0 Xi 1 Xi X Yi 1 Yi Y 其中 1 max X Y max X Y X k 1 k 1時(shí) Xi 1 Xi 或 1 k Yi 1 Yi 或 1 計(jì)算機(jī)圖形學(xué) 5 2 DDA 算法的實(shí)現(xiàn)算法的實(shí)現(xiàn) DDA 算法畫線 int dx dy epsl k i float x y xIncre yIncre dx x1 x0 dy y1 y0 x float x0 y float y0 if abs dx abs dy epsl abs dx else epsl abs dy xIncre float dx float epsl yIncre float dy float epsl for i 0 i epsl i dc SetPixel int x 0 5 int y 0 5 color x x xIncre y y yIncre 3 2 23 2 2 中點(diǎn)中點(diǎn) BresenhamBresenham 算法的實(shí)現(xiàn)算法的實(shí)現(xiàn) 1 1 中點(diǎn)中點(diǎn)BresenhamBresenham算法算法基本原理 基本原理 每次在最大位移方向上走一步 而另一個(gè)方向是走還是不走取決于誤差項(xiàng) 的判別 若位移較小的方向上的下一個(gè)點(diǎn)距離 1更近 則這個(gè)方向上向前走一 步 否則 這個(gè)方向上不向前前進(jìn) 此外 在運(yùn)用Bresenham算法時(shí)還應(yīng)當(dāng)注意 當(dāng)所畫直線垂直于X軸時(shí)的情況 2 2 中點(diǎn) 中點(diǎn) BresenhamBresenham 算法的實(shí)現(xiàn)算法的實(shí)現(xiàn) 中點(diǎn) Bresenham 算法畫線 int a b delta1 delta2 d x y 傳入端點(diǎn)坐標(biāo) x 值相等 if x0 x1 if y0 y1 for int i y0 i y1 i dc SetPixel x0 i color else for int i y1 i y0 i dc SetPixel x0 i color return 斜率判斷 斜率絕對(duì)值大于 1 則 m 為 false 否則為 true BOOL m fabs y1 y0 x1 d x0 x0 x1 x1 d d y0 y0 y1 y1 d a y0 y1 b x1 x0 x x0 y y0 dc SetPixel x y color 斜率絕對(duì)值小于等于 1 if m 第一種情況 y 值遞增 if y0 y1 d 2 a b delta1 2 a delta2 2 a b while x x1 if d 0 x y d delta2 else x d delta1 dc SetPixel x y color 第三種情況 y 值遞減 else d 2 a b delta1 2 a delta2 2 a b while x x1 if d 0 x d delta1 else x y d delta2 dc SetPixel x y color 計(jì)算機(jī)圖形學(xué) 7 斜率絕對(duì)值大于 1 else 第二種情況 y 值遞增 if y0 y1 d a 2 b delta1 2 b delta2 2 a b while y y1 if d y1 if d 0 y x d delta2 else y d delta1 dc SetPixel x y color 3 2 33 2 3 改進(jìn)改進(jìn) BresenhamBresenham 算法畫線算法畫線 1 1 改進(jìn)改進(jìn) BresenhamBresenham 算法的基本原理算法的基本原理 改進(jìn) Bresenham 算法的原理與 Bresenham 算法相似 都是每次在最大位移 方向上走一步 而另一個(gè)方向是走還是不走取決于誤差項(xiàng)的判別 只是前者在 誤差計(jì)算上進(jìn)行了相關(guān)的改進(jìn) 使其可以畫出更加精確的直線 此外 在運(yùn)用 改進(jìn) Bresenham 算法時(shí)還應(yīng)當(dāng)注意當(dāng)所畫直線垂直于 X 軸時(shí)的情況 2 2 改進(jìn) 改進(jìn) BresenhamBresenham 算法的實(shí)現(xiàn)算法的實(shí)現(xiàn) 改進(jìn) Bresenham 算法畫線 int x y dx dy p 計(jì)算機(jī)圖形學(xué) 8 傳入端點(diǎn)坐標(biāo) x 值相等 if x0 x1 if y0 y1 for int i y0 i y1 i dc SetPixel x0 i color else for int i y1 i y0 i dc SetPixel x0 i color return 斜率判斷 斜率絕對(duì)值大于 1 則 m 為 false 否則為 true BOOL m fabs y1 y0 x1 p x0 x0 x1 x1 p p y0 y0 y1 y1 p x x0 y y0 dx x1 x0 dy y1 y0 斜率絕對(duì)值小于等于 1 if m 第一種情況 y 遞增 if y0 y1 p dy 1 dx while x x1 dc SetPixel x y color if p 0 x p p dy 1 else x y p p dy dx 1 第三種情況 y 遞減 計(jì)算機(jī)圖形學(xué) 9 else p dx dy 1 while x x1 dc SetPixel x y color if p 0 x p p dy 1 else x y p p dy dx 1 斜率絕對(duì)值大于 1 else 第二種情況 y 遞增 if y0 y1 p dx 1 dy while y y1 dc SetPixel x y color if p 0 y p p dx 1 else x y p p dx dy 1 第四種情況 y 遞減 else p dx y0 dc SetPixel x y color if p 0 y p p dx 1 else x y p p dx dy 1 計(jì)算機(jī)圖形學(xué) 10 3 2 43 2 4 繪制圖形的對(duì)話框繪制圖形的對(duì)話框 1 1 對(duì)話框的介紹 對(duì)話框的介紹 在繪制直線時(shí) 使用對(duì)話框的方式來獲取直線的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo) 并 且在對(duì)話框中選擇所要使用的直線生成算法 此外 在對(duì)話框中 還添加了選 擇顏色的選項(xiàng) 讓用戶可以自己來選擇顏色來進(jìn)行繪圖 繪制直線時(shí) 默認(rèn)的 顏色是紅色 此外 繪制直線的默認(rèn)算法是 DDA 算法 2 對(duì)話框的截圖 對(duì)話框的截圖 3 2 53 2 5 繪制直線的截圖繪制直線的截圖 計(jì)算機(jī)圖形學(xué) 11 其中紅色線為 DDA 算法所繪制的 藍(lán)色線為 Bresenham 算法所繪制的 黃 色線為改進(jìn)的 Bresenham 算法所繪制的 3 33 3 圓的繪制圓的繪制 常用的圓的掃描轉(zhuǎn)換算法有八分法畫圓和 Bresenham 畫圓算法 其中 八 分法畫圓是圓的掃描變換中的基礎(chǔ)算法 3 3 13 3 1 八分法畫圓算法八分法畫圓算法 1 1 八分法畫圓的基本思想 八分法畫圓的基本思想 八分法畫圓的基本思想是在圓上任取一個(gè)點(diǎn) 由于圓是一個(gè)關(guān)于軸對(duì)稱 的圖形 因而可以根據(jù)這個(gè)點(diǎn)來得出圓上的另外七個(gè)點(diǎn) 以此通過這八個(gè)點(diǎn)來 畫圓弧 以得到一個(gè)完整的圓 2 2 八分法畫圓算法的實(shí)現(xiàn) 八分法畫圓算法的實(shí)現(xiàn) 八分法畫圓 int x y dx dy d x 0 y r d 1 r dx 3 dy 5 r 1 while x y 繪制圓弧上對(duì)稱的八個(gè)像素點(diǎn) dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color 計(jì)算機(jī)圖形學(xué) 12 dc SetPixel x x0 y y0 color dc SetPixel y x0 x y0 color dc SetPixel y x0 x y0 color dc SetPixel y x0 x y0 color dc SetPixel y x0 x y0 color if d 0 d dx dx 2 x else d dx dy dx 2 dy 2 x y 3 3 23 3 2 BresenhamBresenham 算法畫圓算法畫圓 1 Bresenham 1 Bresenham 算法畫圓的基本思想算法畫圓的基本思想 Bresenham 算法畫圓實(shí)際上是對(duì)八分法畫圓中的誤差項(xiàng)判斷進(jìn)行了一點(diǎn)相 應(yīng)的改進(jìn) 在 Bresenham 算法畫圓算法中 誤差項(xiàng)的判斷和直線的 Bresenham 算法是一樣的 2 2 BresenhamBresenham 法畫圓算法的實(shí)現(xiàn)法畫圓算法的實(shí)現(xiàn) Bresenham 法畫圓 int x y p x 0 y r p 3 r 1 for x y x 繪制圓弧上對(duì)稱的八個(gè)像素點(diǎn) dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color dc SetPixel y x0 x y0 color dc SetPixel y x0 x y0 color dc SetPixel y x0 x y0 color dc SetPixel y x0 x y0 color if p 0 p x 2 6 else 計(jì)算機(jī)圖形學(xué) 13 p x y 2 10 y 3 3 33 3 3 繪制圖形的對(duì)話框繪制圖形的對(duì)話框 1 1 對(duì)話框的介紹 對(duì)話框的介紹 在繪制圓時(shí) 使用對(duì)話框的方式來獲取圓的圓心坐標(biāo)和半徑 并且在對(duì)話 框中選擇所要使用的圓生成算法 此外 在對(duì)話框中 還添加了選擇顏色的選 項(xiàng) 讓用戶可以自己來選擇顏色來進(jìn)行繪圖 繪制圓時(shí) 默認(rèn)的顏色是藍(lán)色 此外 繪制圓的默認(rèn)算法是八分法畫圓算法 2 對(duì)話框的截圖 對(duì)話框的截圖 計(jì)算機(jī)圖形學(xué) 14 3 3 43 3 4 繪制圓的截圖繪制圓的截圖 圖中藍(lán)色的為八分法畫圓算法生成的圓 紅色為 Bresenham 算法畫圓 3 43 4 BresenhamBresenham 算法畫橢圓算法畫橢圓 由于可以將橢圓看成是拉長(zhǎng)了的圓 因而生成橢圓的中點(diǎn) Bresenham 算法 和生成圓的中點(diǎn) Bresenham 算法有類似之處 計(jì)算機(jī)圖形學(xué) 15 3 4 13 4 1 BresenhamBresenham 畫橢圓算法的實(shí)現(xiàn)畫橢圓算法的實(shí)現(xiàn) Bresenham 畫橢圓 int x y p int aa a a bb b b 下面繪制第 1 部分 x 0 y b p 2 bb aa 1 2 b while bb x 0 p 4 aa 1 y bb 4 x 6 y else p bb 4 x 6 x 下面繪制第 2 部分 x a y 0 p 2 aa bb 1 2 a while bb x aa y 繪制對(duì)稱的四個(gè)點(diǎn) dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color dc SetPixel x x0 y y0 color if p 0 p 4 bb 1 x aa 4 y 6 x else p aa 4 y 6 計(jì)算機(jī)圖形學(xué) 16 y 3 4 23 4 2 繪制圖形的對(duì)話框繪制圖形的對(duì)話框 1 1 對(duì)話框的介紹 對(duì)話框的介紹 在繪制橢圓時(shí) 使用對(duì)話框的方式來獲取橢圓的中心坐標(biāo) 長(zhǎng)軸和短軸 此外 在對(duì)話框中 還添加了選擇顏色的選項(xiàng) 讓用戶可以自己來選擇顏色來 進(jìn)行繪圖 繪制圓時(shí) 默認(rèn)的顏色是紅色 2 對(duì)話框的截圖 對(duì)話框的截圖 3 4 33 4 3 繪制橢圓的截圖繪制橢圓的截圖 3 53 5 二維圖形的變換二維圖形的變換 圖形的二維變換是計(jì)算機(jī)圖形學(xué)領(lǐng)域內(nèi)較為基礎(chǔ)的內(nèi)容之一 通過圖形變 換 可有簡(jiǎn)單圖形得到復(fù)雜圖像 方便用戶對(duì)圖形進(jìn)行觀察 一般來說 圖形 的幾何變換是指對(duì)圖形的幾何信息經(jīng)過平移 比例 旋轉(zhuǎn) 對(duì)稱 錯(cuò)切等變換 計(jì)算機(jī)圖形學(xué) 17 后產(chǎn)生新的圖形 下面就二維圖形的簡(jiǎn)單圖形變換進(jìn)行介紹 3 5 13 5 1 平移變換平移變換 平移變換只改變圖形的位置 不改變圖形的大小和形狀 通過圖形的平移 變換 可以讓用戶感受到圖形的移動(dòng) 1 1 平移變換的算法實(shí)現(xiàn) 平移變換的算法實(shí)現(xiàn) CPen pen0 PS SOLID 1 color CPen pOldPen dc SelectObject dc Rectangle x0 y0 x1 y1 CPen pen1 PS SOLID 1 color1 pOldPen dc SelectObject x0 x0 a y0 y0 b x1 x1 a y1 y1 b dc Rectangle x0 y0 x1 y1 dc SelectObject pOldPen 2 2 繪制圖形的對(duì)話框繪制圖形的對(duì)話框 1 1 對(duì)話框的介紹對(duì)話框的介紹 在進(jìn)行平移變換時(shí) 使用矩形框來驗(yàn)證平移 用對(duì)話框的方式來獲取矩形 的上的兩個(gè)對(duì)角 此外 在對(duì)話框中 還添加了選擇顏色的選項(xiàng) 讓用戶可以 自己來選擇顏色來進(jìn)行選擇平移前后的顏色 繪制圓時(shí) 默認(rèn)的顏色是平移前 是紅色 平移后是藍(lán)色 2 對(duì)話框的截圖對(duì)話框的截圖 3 3 平移截圖平移截圖 計(jì)算機(jī)圖形學(xué) 18 其中紅色的是平移前的 藍(lán)色的是平移后的 3 3 23 3 2 比例變換比例變換 圖形的比例變換就是對(duì)圖形的放縮 使得圖形可以放大和縮小 從而便于 使用 比例變換對(duì)話框的截圖 比例變換的截圖 計(jì)算機(jī)圖形學(xué) 19 此圖為縮小變換 紅色為原圖 藍(lán)色為縮小后的圖 此圖為放大變換 紅色為原圖 藍(lán)色為縮小后的圖 3 3 33 3 3 對(duì)稱變換對(duì)稱變換 對(duì)稱變換其實(shí)就是根據(jù)一條對(duì)稱軸 然后計(jì)算對(duì)稱后的點(diǎn)的坐標(biāo) 進(jìn)而確 定圖形在對(duì)稱后的形狀和位置 從而讓用戶可以體驗(yàn)到圖形的變換 對(duì)稱變換對(duì)話

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論