Brezenxeym algoritmi. Kesmaning rastr tasviri.
(X1,Y1) va (X2,Y2) nuqtalarini tutashtiruvchi kesmaning rastr tasvirini
ko`rish masalasini ko`ramiz. Faraz qilamiz
(3.1.3)
Berilgan ikki nuqtadan o`tuvchi to`g`ri chiziq tenglamasini tuzamiz:
(3.1.4)
unda kesma quyidagi tenglama bilan beriladi:
(3.1.5)
yoki:
bu yerda, y=ky+b,
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
keyingi qadamga ya’ni i+1:
di+1 dan di ayiramiz va xi- xi-1=1 ni hisobga olgan holda:
(3.1.9) So`ng, agar di<0 bo`lsa si tanlanadi, u holda yi= yi-1 va di+1= di+2dy. Aks holda, ya’ni di ≥ 0 bo`lsa si tanlanadi va u holda yi-yi-1=1
(3.1.10)
Shunday qilib biz di+1 ni di ning qiymati orqali hisoblash va si,Ti nuqtalarni tanlash uchun iterativ usulni hosil qildik. Boshlang`ich holatda d1=2dy-dx (x0, y0)=(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}
0>0>
Dostları ilə paylaş: |