計算機圖形學實驗報告

2022-01-04 21:23:03 字數 2087 閱讀 5127

成都理工大學電腦科學與技術學院

(一)所在系: 數字**技術系

專業學生姓名

學號2023年月日

實驗一基本圖元的生成

一、實驗目的與實驗要求:

1、目的與任務:

學習並掌握圖形處理的數學模型和演算法。

2、實驗基本要求:

(1)利用所學演算法原理(dda、中點畫線、bresenham),程式設計繪製生成直線,並比較各種演算法的差別。所用演算法不限定哪種,但不能直接利用程式語言中的畫線命令。

(2)分別利用所學演算法原理(中點畫圓、bresenham畫圓),程式設計繪製圓。所用演算法不限定哪種,但不能直接利用程式語言中的畫圓命令。

二、繪圖基本演算法

1、生成直線的基本演算法

(1)dda方法

演算法的基本思想是利用直線的微分方程來確定直線上的點的座標。無論光柵顯示器或繪圖機都可以看成有乙個網格存在。表示一條直線,就是要用靠近直線的一些網格點來代表這一直線。

顯示時要使這些點發出一定亮度。

設直線的起點座標ps(xs,ys),終點座標為pe(xe,ye),令δx=xe - xs, δy=ye - ys,

要繪的直線的微分方程是1.1)

令t= max(|δx|,|δy1.2)

取時間步長為1/δt,則可得式(1.1)的數值解的遞推公式

xi+1= xi + δx/δt, yi+1= yi + δy/δt1.3)

用式(1.3)可求得圖中直線pspe上三角形表示的點,但顯示時要用象素(即圖中網格結點)來表示,這要用捨入的辦法來找到最靠近三角形表示的點的象素,用這些象素(圖中圓表示的點)來表示直線。這個方法稱為dda方法。

(2)中點法

…….(3)bresenham法

…….2、bresenham生成圓弧的演算法

本演算法的核心是每一步在平面的網格上尋找最接近於實際圓周的點,bresenham圓弧演算法是最有效的演算法之一。不失一般性,我們可以假設圓心(xc,yc)就在原點。否則只需要把求到的圓上的點(x,y)作一下平移變換即可。

x』= x + xc,y』= y + yc

便可得到圓心在(x,y)的圓上的點(x』,y』)。

我們只須討論圖1.2中的弧ab的畫法,如果要顯示乙個整圓時,只須在顯示ab上任一點(x,y)時,同時顯示在圓周上其他七個對稱點。

圖1.2 七個對稱點

現在從a點開始向右下方逐點來尋找弧ab要用的點。如圖1.3中點pi-1是已選中的乙個表示圓弧上的點,根據弧ab的走向,下乙個點應該從hi或者li中選擇。

顯然應選離ab最近的點作為顯示弧ab的點。

假設圓的半徑為r,顯然,當xi2 +yi-12 -r2≥r2- (xi2 + (yi-1-1)2)時,應該取li。否則取hi。

令 di =xi2 + yi-12+xi2 +(yi-1-1)2 - 2r21.4)

顯然,當di ≥0 時應該取li。否則取hi。

剩下的問題是如何快速的計算di。設圖1.3中pi-1的座標為(xi-1,yi-1),則hi和li的座標為(xi,yi-1)和(xi,yi-1-1)。易知

x0=0,y0=r,x1=x0+1,y1= y0-1

因此d1=x12 + y02 + x12 +(y0 - 1)2 - 2r2 = 3 - 2y0 = 3 - 2r1.5)

di = xi2 + yi-12 + xi2 + (yi-1-1)2 - 2r2

=2xi2 + 2yi-12 - 2yi-1 - 2r2 + 11.6)

di+1 = xi+12 + yi2 + xi+12 + (yi-1)2 - 2r2

=(xi + 1)2 + yi2 + (xi + 1)2 + (yi - 1)2 - 2r2

2xi2 + 4xi + 2yi2 - 2yi - 2r2+ 31.7)

當di<0時,點hi被選中,這時,yi=yi-1,則

di+1= di+ 4xi + 21.8)

當di≥0時,點li被選中,這時,yi=yi-1-1,則

di+1 = di+ 4(xi-yi) +21. 9)

三、實驗程式設計清單

完整程式程式清單,標註自己編寫的部份程式

四、實驗結果(螢幕抓屏、盡可能多抓幾幅)

五、實驗小結

寫明自己工作內容、認識與體會等內容

計算機圖形學實習報告

實習報告 實習名稱 計算機圖形學實習 班級09021班 學號姓名 實習地點 5棟機房 實習指導教師 實習時間 2011年6月27日至 7月 10日遙感資訊工程學院 一 實習目的與意義 本次實習為集中實習,基於autocad2004平台與vc環境系統,製作二維和三維立體產品。通過對autocad200...

計算機圖形學實習報告

檢查出棧畫素的4 鄰接點,若其中某個畫素不是邊界色且未置成多邊形色,則把該畫素入棧。3 檢查棧是否為空,若棧非空重複執行步驟 2 若棧為空則結束。邊界填充演算法可以用於填充帶有內孔的平面區域。其缺點是把太多的畫素壓入堆疊,有些畫素甚至會入棧多次,這樣一方面降低了演算法的效率,另一方面還要求很大的儲存...

計算機圖形學實習報告

西北農林科技大學實驗報告 學院名稱 理學院專業年級 2011級信計1班 姓名 xx學號 xx 課程 計算機圖形學報告日期 2013年12月7日 1 實驗目的 了解和掌握中點演算法和bresenham演算法。2 實驗內容 1 bresenhan畫圓 橢圓演算法。2 編寫源程式,在計算機上編譯執行,畫出...