MidpointCircle

来源:互联网 发布:移动网络解锁 编辑:程序博客网 时间:2024/06/05 19:30
#include <stdio.h>#include <graphics.h>void MidpointCircle( int x0, int y0, int R );int main(){intx0, y0;intR;intdriver = 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 ){intx[8], y[8];intdeltax, deltay, d;intcolor[8] = { BLUE, GREEN, RED, YELLOW, WHITE, BROWN, CYAN, MAGENTA };inti;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--;        }    }}

0 0
原创粉丝点击