MidpointCircle
2015-09-18 08:15
330 查看
#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--; } } }
相关文章推荐
- Servlet生命周期
- mysql复习笔记
- 如何快速定位到Eclipse自动添加的TODO
- Intent 各种跳转
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- 读取或设置BIOS时间
- UVA 11997 K Smallest Sums(优先队列)
- servlet生命周期和工作原理
- 命令行和界面程序同时使用
- 设计模式之外观模式
- BresenhamLine
- 第3.2 使用案例1:股票期货stock portfolio 21050917
- MidpointLine
- 随记
- WPF 采用Border创建圆角
- DDALine
- setlinestyle(j,0,3)
- 伴随待字闺中的生命周期分析
- setlinestyle(0,0,1);setbkcolor(i);setcolor(j);
- 献血是件很赞的事——北漂18年(26)