18. 以下是中点画圆的一段程序,设半径 r=100,颜色为 RED,试补充完成该程序。 /*图形函数库头文件声明*/ void circlePoint(int x,int y) { putpixel(200+x,200+y,RED); putpixel(200+y,200+x, RED) ; putpixel(200-y,200+x, RED); putpixel(200-x,200+y, RED); ; putpixel(200-y,200-x, RED); putpixel(200+y,200-x, RED); putpixel(200+x,200-y, RED); } void midCircle(int r) { int x,y,d; x=0;y=r;d=1-r; while(x<y) { ; if(d<0) d+=2*x+3; else{ d+=2*(x-y)+5;y--;} x++; } } void main(){ int gdriver,gmode; detectgraph(&gdriver,&gmode); initgraph(&gdriver,&gmode,"C:\\TURBOC2"); ; getch(); closegraph(); }
时间: 2024-02-27 07:57:29 浏览: 81
中点画圆的算法
以下是补充完成的程序:
```c
/*图形函数库头文件声明*/
void circlePoint(int x, int y) {
putpixel(200 + x, 200 + y, RED);
putpixel(200 + y, 200 + x, RED);
putpixel(200 - y, 200 + x, RED);
putpixel(200 - x, 200 + y, RED);
putpixel(200 - y, 200 - x, RED);
putpixel(200 + y, 200 - x, RED);
putpixel(200 + x, 200 - y, RED);
}
void midCircle(int r) {
int x, y, d;
x = 0;
y = r;
d = 1 - r;
while (x <= y) {
circlePoint(x, y);
if (d < 0) {
d += 2 * x + 3;
} else {
d += 2 * (x - y) + 5;
y--;
}
x++;
}
}
void main() {
int gdriver, gmode;
detectgraph(&gdriver, &gmode);
initgraph(&gdriver, &gmode, "C:\\TURBOC2");
midCircle(100);
getch();
closegraph();
}
```
该程序使用中点画圆算法来绘制一个半径为 100,颜色为 RED 的圆。在 `midCircle` 函数中,`circlePoint` 函数用于绘制圆上的八个对称点。使用 `putpixel` 函数将每个点绘制在屏幕上,最终形成一个圆。在 `main` 函数中,调用 `midCircle` 函数来绘制圆,并使用 `getch` 函数来等待用户按下任意键,最后使用 `closegraph` 函数关闭图形界面。注意,中点画圆算法中需要在循环条件中包含等于号,否则会出现漏画的情况。
阅读全文