#include <stdio.h>
#include <graphics.h>
void MidpointCircle( int x0, int y0, int R );
int main()
{
int x0, y0;
int R;
int driver = DETECT, mode;
initgraph( &driver, &mode, "C:\\tc20" );
printf( "Input x0,y0:" );
scanf( "%d,%d", &x0, &y0 );
printf( "Input radius:" );
scanf( "%d", &R );
MidpointCircle( x0, y0, R );
getch();
closegraph();
return(0);
}
void MidpointCircle( int x0, int y0, int R )
{
int x[8], y[8];
int deltax, deltay, d;
int color[8] = { BLUE, GREEN, RED, YELLOW, WHITE, BROWN, CYAN, MAGENTA };
int i;
d = 1 - R;
deltax = 3;
deltay = 5 - R - R;
x[0] = x0; y[0] = y0 + R;
x[4] = x0 + x0 - x[0]; y[4] = y0 + y0 - y[0];
x[3] = x[0]; y[3] = y[4];
x[7] = x[4]; y[7] = y[0];
x[1] = y[0] + x0 - y0; y[1] = x[0] - x0 + y0;
x[5] = x0 + x0 - x[1]; y[5] = y0 + y0 - y[1];
x[2] = x[1]; y[2] = y[5];
x[6] = x[5]; y[6] = y[1];
while ( x[0] <= y[0] )
{
for ( i = 0; i < 8; i++ )
putpixel( x, y, color );
if ( d < 0 )
{
d += deltax;
deltax += 2;
x[0]++; y[1]++;
y[2]--; x[3]++;
x[4]--; y[5]--;
y[6]++; x[7]--;
}else {
d += deltax + deltay;
deltax += 2;
deltay += 2;
x[0]++; y[0]--;
x[1]--; y[1]++;
x[2]--; y[2]--;
x[3]++; y[3]++;
x[4]--; y[4]++;
x[5]++; y[5]--;
x[6]++; y[6]++;
x[7]--; y[7]--;
}
}
}
// other one:
#include <stdio.h>
#include <graphics.h>
void MidpointCircle( int x0, int y0, int R );
int main()
{
int x0, y0;
int R;
int driver = DETECT, mode;
initgraph( &driver, &mode, "C:\\tc20" );
printf( "Input x0,y0:" );
scanf( "%d,%d", &x0, &y0 );
printf( "Input radius:" );
scanf( "%d", &R );
MidpointCircle( x0, y0, R );
getch();
closegraph();
return(0);
}
void MidpointCircle( int x0, int y0, int R )
{
int x, y, deltax, deltay, d;
x = 0; y = R; d = 1 - R;
deltax = 3;
deltay = 5 - R - R;
while ( x <= y )
{
putpixel( x + x0, y + y0, 1 );
putpixel( y + x0, x + y0, 2 );
putpixel( y + x0, -x + y0, 3 );
putpixel( x + x0, -y + y0, 4 );
putpixel( -x + x0, -y + y0, 5 );
putpixel( -y + x0, -x + y0, 6 );
putpixel( -y + x0, x + y0, 7 );
putpixel( -x + x0, y + y0, 8 );
if ( d < 0 )
{
d += deltax;
deltax += 2;
x++;
}else {
d += deltax + deltay;
deltax += 2;
deltay += 2;
x++; y--;
}
}
}
MidpointCircle
最新推荐文章于 2023-11-30 15:12:24 发布