;
,
.
, , :
, ;
, 45 , , (. 2.2.1);
, , , 45 (. . 2.2.1).
, 1280×1024.
, , . "" .
2.3. .
(x1, y1) (x2, y2) . . 2.3.1
. 2.3.1
; , ][ .
N .
.
, .
:
.
, ..
:
.
.
2.4. .
1965 . di, s t (. .2.4.1). .2.4.1 i- , Pi-1 , , : Ti Si.
s<t, Si ; Ti. , s-t<0, Si; Ti.
|
|
. 2.4.1.
(x1, y1) (x2, y2). , , T(x1, y1) , , (D x, D y), D x= x2- x1, D y= x2- x1. y=x× D y/Dx. ,
D x:
D x>0, D x(s-t) . di:
r = xi-1, q = yi-1, :
, xI - xi-1=1.
di >= 0, Ti,
di <0, Si,
, di.
d1=2D y-D x.
:
. 2.4.2
, .. , N .
2.5. .
, x2+y2=R2, :
- x=R× cos(a);
- y=R× sin(a).
:
void Circle (int x, int y, int R, int color)
{
int a;
int x1;
int x2;
int y1;
int y2;
x2=x+R;
y2=y;
for (int a=1; a<=360; a++)
{
x1=x2; y1=y2;
x2=round(R*cos(a))+x;
y2=round(R*sin(a))+x;
Line (x1, y1, x2, y2, color);
}
}
. 2.5.1.
, . (x, y) , , , . , y x=0..R/SQRT(2) 00 450. , , .
void Circle_Pixel(int x0, int y0, int x, int y, int color);
{
putpixel(x0 + x, y0 + y, color);
putpixel(x0 + y, y0 + x, color);
putpixel(x0 + y, y0 - x, color);
putpixel(x0 + x, y0 - y, color);
putpixel(x0 - x, y0 - y, color);
putpixel(x0 - y, y0 - x, color);
putpixel(x0 - y, y0 + x, color);
putpixel(x0 - x, y0 + y, color);
}
:
void Circle (int x0, int y0, int R, int color)
{
for (int x=0; x<=R/sqrt(2); x++)
{
int y = (int)(sqrt(sqr(R)-sqr(x)));
Circle_Pixel (x0, y0, x, y, color);
}
}
2.6.
, . , .
. 2.6.1
, x=x0.. x0+R/sqrt(2). , . D(Pi)=(x2i+ y2i) R2.
. 2.6.1, . Pi-1 , , : Ti Si. , :
|
|
D(Si)=((q+1)2+ p2) R2, D(Ti)=((q+1)2+ (p+1)2) R2.
|D(Si)| < |D(Ti)|, Si, - Ti. di = |D(Si)| - |D(Ti)|, Si di < 0, Ti. , 00 450, D(Si) > 0 Si , D(Ti) < 0, Ti ,
di = D(Si) + D(Ti).
, , , :
d1=3-2R.
Si ( di < 0),
Di=4xi-1+6;
Ti ( di >=0),
D i=4(xi-1 * yi-1) +10.
- (. 2.6.2).
. 2.6.2
, .
2.7.
.2.7.1. . (), (), () () . , . , , . , . .
, . . , b, , , , ij, , q .2.7.1.
, , :
x <= <= x <= <= .
. 2.7.1.
, , , .
, , , , ab . 2.7.1. , , gh . 2.7.1. , , , , , . , ij . 2.7.1. gh, , kl, .
b - , , .