西北農林科技大學實驗報告
學院名稱:理學院專業年級: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 所...