45
keyingi qadamga ya’ni i+1:
d
i+1
dan d
i
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 x
If 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.
0>0>
Dostları ilə paylaş: