.
: ( ), , .
2.
:
- (DDA - Digital Differential Analyzer)
:
;
,
.
, , :
, ;
, 45 , ,
, , , 45 .
:
, :
dY/dX=Py/Px
Py = Yk - Yn - Y
Px = Xk - Xn - X.
.
, N, . N :
X0 = Xn; Xi+1 = Xi + Px/N.
Y0 = Yn; Yi+1 = Yi + Py/N.
Xi, Yi , .
, , , , .
(x1,y1) (x2,y2) (Px>= Py>= 0) :
:
Px= x2 - x1;
Py= y2 - y1;
PutPixel (x1, y1);
while (x1 < x2) {
x1:= x1 + 1.0;
y1:= y1 + Py/Px;
PutPixel (x1, y1);
}
, , , - , , .
|
|
, , , , . , < 1/2, , (0,0), (1,0) (. ), > 1/2, - (1,1) (. ). . .
2.1.
< 0, Y- Y, .. Y- . Y 1.
, , , :
X= x1;
Y= y1;
Px= x2 - x1;
Py= y2 - y1;
E= 2*Py - Px;
i= Px;
.
PutPixel(X, Y); /* */
while (i=i- 1 >= 0) {
if (E >= 0) {
X= X + 1;
Y= Y + 1;
E= E + 2*(Py - Px);
} else
X= X + 1;
E= E + 2*Py;
PutPixel(X, Y); /* */
}
0 <= dY <= dX. .
.
1/8 , . :
X2 + Y2 = R2
, Pi(Xi, Yi), , :
Ei(Pi) = (X2i + Y2i) - R2
. , , , . .
1/8 , X=0, Y=R.
i+1- , i-.
2.2. .
(Xi, Yi) (. .2.2 ) Pg = (Xi+1, Yi) - , Pd = (Xi+1, Yi-1) - , Pv = (Xi, Yi-1) - .
|
|
|
|
|
|
|
Dd < 0
di =|Dg| - |Dd|
di <= 0 - Pg
di > 0 - Pd
Dd > 0
si=|Dd| - |Dv|
si < 0 - Pd
|
|
si > 0 - Pv
Dd = 0
Pd.
. , .
,
, , :
v ,
v .
v .
1 |
2 |
1 |
2 |
3 |
. |
3.1.
.
, , (. .5.1.).
.