計算機圖形學實習報告

2022-01-01 11:26:37 字數 1803 閱讀 7083

西北農林科技大學實驗報告

學院名稱:理學院專業年級:2011級信計1班

姓名:xx學號:xx

課程:計算機圖形學報告日期:2023年12月7日

1.實驗目的:

了解和掌握中點演算法和bresenham演算法。

2.實驗內容:

1)bresenhan畫圓、橢圓演算法。

2)編寫源程式,在計算機上編譯執行,畫出正確的圖形和輸出交點座標。

3.實驗步驟:

1)中點bresenhan畫橢圓演算法;

設圓的半徑為r,先考慮圓心在(0, 0),從x=0、y=r開始的順時針方向的1/8圓周的生成過程。在這種情況下,x每步增加1,從x=0開始,到x=y結束,即有xi+1 = xi + 1;相應的,yi+1則在兩種可能中選擇:yi+1=yi或者yi+1 = yi–1。

選擇的原則是考察精確值y是靠近yi還是靠近yi–1(見圖1-7),計算式為:

y2= r2–(xi+1)2

d1 = yi2–y2= yi2–r2+(xi+1)2

d2 = y2– (yi–1)2= r2–(xi+1)2–(yi–1)2

令pi=d1–d2,並代入d1、d2,則有:

pi = 2(xi+1)2 + yi2+ (yi–1)2 –2r2

pi稱為誤差。如果pi<0,則yi+1=yi,否則yi+1=yi–1。

pi的遞迴式為:

pi+1 = pi + 4xi +6+2(yi2+1– yi2)–2(yi+1–yi)

pi的初值由式(1.6)代入xi=0,yi=r,得:

p1 = 3–2r

2)流程圖:

3)編輯源程式並進行除錯:

function midbresenhamellipse(a,b)

figure

hold on

axis manual

axis([(-a)*5/4,a*5/4,(-b)*5/4,b*5/4])

x = 0 ; y = b ;

d = b^2 +a^2*(-b+0.25);

while ( b^2*(x+1) ) < ( a^2*(y-0.5) )

plot(x,y,'k');

plot(-x,y,'k');

plot(-x,-y,'k');

plot(x,-y,'k');

if d <= 0

d = d+b^2*(2*x+3);

x = x+1;

y = y;

elseif d > 0

d = d+b^2*(2*x+3)+a^2*(-2*y+2);

x = x+1;

y = y-1;

endend

% step6:計算下半部分d的初值

d = b^2*(x+0.5)^2+a^2*(y-1)^2-a^2*b^2;

% step7&8&9

while y >= 0

plot(x,y,'k');

plot(-x,y,'k');

plot(-x,-y,'k');

plot(x,-y,'k');

if d <= 0

d = d+b^2*(2*x+2)+a^2*(-2*y+3);

x = x+1;

y = y-1;

elseif d > 0

d = d+a^2*(-2*y+3);

x = x;

y = y-1;

endend

4)除錯結果:

4. 實習總結:

在這次的計算機圖形學的實習中,還有一些不熟悉,對具體的步驟了解的也不是很好,希望在以後的實習中能夠解決這些不足。

計算機圖形學實習報告

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

計算機圖形學實習報告

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

計算機圖形學試題 A

2010 2011計算機圖形學試題 a 一 填空題 共20分,每空2分 1 將多邊形外部一點a與某一點b用線段連線,若此線段與多邊形邊界相交的次數為 則點b在多邊形外部。若此線段與多邊形邊界相交的次數為,則點b在多邊形內部。2 生成直線的四點要求是速度要快。3 由5個控制頂點pi i 0,1,4 所...