O‘zbekiston respublikasi oliy va o‘rta maxsus ta’lim vazirligi n. N. Zaripov


Brezenxeym algoritmi. Kesmaning rastr tasviri



Yüklə 5,59 Mb.
Pdf görüntüsü
səhifə31/94
tarix08.06.2023
ölçüsü5,59 Mb.
#116037
1   ...   27   28   29   30   31   32   33   34   ...   94
Kompyuter grafikasi o\'quv qo\'llanma

Brezenxeym algoritmi. Kesmaning rastr tasviri. 
(X
1
,Y
1
) va (X
2
,Y
2
) nuqtalarini tutashtiruvchi kesmaning rastr tasvirini
ko`rish masalasini ko`ramiz. Faraz qilamiz 
Berilgan ikki nuqtadan o`tuvchi to`g`ri chiziq tenglamasini tuzamiz: 
unda kesma quyidagi tenglama bilan beriladi: 
yoki:
y
=
ky
+
b

bu yerda, 
 
Paskal tilida programmasi:
Procedure line(x1, x2, y1, y2: integer; s: word);
var k, b: real;
x, y: integer;
Begin
K: = (y2-y1)/(x2-x1);
B: = y1-r*x1;
For x:=x1 to x2 do 
 
 
(3.1.3)
(3.1.4)
(3.1.5)
(3.1.6)
(3.1.7)


45 
keyingi qadamga ya’ni i+1: 
 
d
i+1 
dan d

ayiramiz va x
i
- x
i-1
=1
 
ni hisobga olgan holda: 
So`ng, agar d
i
<0 bo`lsa s
i
tanlanadi, u holda yi= y
i
-1 va d
i
+1= d
i
+2dy.
Aks holda, ya’ni d
i
≥ 0 bo`lsa s
i
tanlanadi va u holda y
i
-y
i
-1=1 
 
Shunday qilib biz d
i+1
 
ni d
i
 
ning qiymati orqali hisoblash va 
s
i
,T
i
nuqtalarni tanlash
uchun iterativ usulni hosil qildik. Boshlang`ich holatda 
d
1
=2dy-dx (x
0
, y
0
)=(0,0) 
ni
hisobga olgan holda 
i=1 
da topiladi. 
Brezenxeym algoritmi
uchun programmasi quyidagicha: 
Procedure BREZENHAM(x1, x2, y1, y2: integer; c: word); 
Var dx, dy, d, d1, d2, x, y, xend: integer; 
Begin dx:= abs(x2-x1);dy:=abs(y2-y1); 
d:=2*dy-dx; d1:=1*dy;d2:=:2*(dy-dx); 
If x1>x2 
Then begin 
x:=x2; y:=y2; xend:=x2; end; 
Else begin 
x:=x1; y:=y1; xend:=x1; end; 
PutPixel (x,y,c); 
While xIf d<0 
Then d:=d+d1; 
Else begin 
y:=y+1; d:=d+2; end; 
PutPixel(x,y,c);
End; {while} 
End. {BREZENHAM} 
 
(3.1.8)
(3.1.9)
(3.1.10)


46 
SAVOL VA TOPSHIRIQLAR 
1. To`rt bog`lanishlik haqida tushuncha bering. 
2. Sakkiz bog`lanishlik haqida tushuncha bering. 
3. Brezenxeym algoritmi. Kesmaning rastr tasviri haqida tushuncha bering. 
4. Brezenxeym algoritmini tushuntiring? 
 
3.2. Ko`pburchak va murakkab sohalarni bo`yash (Rendering) 
 
 
Kompyuter grafikasida soha
2 ta usul 
bilan berilishi mumkin: 
1. Sohani tashkil etuvchi tashqi nuqtalari bilan, ya’ni sohani ichida yotuvchi 
har bir piksel biror bir rang (oldcolor) bilan beriladi (chegaradagi piksellar bu 
qiymatga ega emas).
2. Soha chegarasi bilan berilishi mumkin , ya’ni chegaradagi piksellar biror bir 
rang bilan (bcolor) beriladi (chegara ichidagi piksellar bu qiymatga ega emas). Shu 
sababli sohani bo`yash, algoritmlari ikki turga bo`linadi. Bundan tashqari 4 va 8 
bog`lanishlik sohalar uchun algoritmlar mavjud. Ichki oldcolor rang bilan berilgan 
yangi newcolor rang bilan 4-bog`lanishlik sohani bo`yash oddiy rekursiya 
algoritmini keltiramiz:
Procedure fill4(x, y: integer; 
Newcolor, oldcolor: word); 
Begin if (GetpPixel(x,y)=oldcolor) 
Then begin 
PutPixel (x,y,newcolor); 
Fill4(x, y-1, newcolor, oldcolor); 
fll4(x, y+1, newcolor, oldcolor); 
Fill4(x-1, y, newcolor, oldcolor); 
Fill4(x+1, y, newcolor, oldcolor); 
End;
End;
{fill} 


47 
Bu yerda, (x,y) ixtiyoriy sohani ichida yotuvchi nuqta, oldcolor qiymatiga ega
piksel. Chegaradagi rangi bilan berilgan (bcolor) sohani bo`yash algoritmi 
quyidagicha: 
Procedure
bfill4(x, y: integer; Bcolor, newcolor: word); 
Begin
If GetPixel(x, y)<>bcolor and 
GetPixel(x, y)<>newcolor 
Then begin 
PutPixel (x, y, newcolor); 
Bfill4(x, y-1, bcolor, newcolor); 
Bfill4(x, y+1, bcolor, newcolor); 
Bfill4(x-1, y, bcolor, newcolor); 
Bfill4(x+1, y, bcolor, newcolor); 
End;
End;
{bfill4} 
Bu yerda, (x,y)
 
- sohani ichida yotuvchi biror bir nuqta (piksel), 
newcolor
bo`yash 
rangi. Keltirilgan algoritmlarni 8-bog`lanishlik sohalarga 4-ta yo`nalishni 8-ta
yo`nalishga almashtirish orqali osongina o`tkazish mumkin. 

Yüklə 5,59 Mb.

Dostları ilə paylaş:
1   ...   27   28   29   30   31   32   33   34   ...   94




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə