求助:中点画圆算法生成的圆边上为何有四条切线?
中点画圆算法,半径250,圆心(250,250),由中点在原点的同半径圆平移过来的!我并没有画线,为何生成的图中多了四条线,不解中???
程序代码:#include <GL/glut.h>
void Circle(void)
{
glColor3f(1.0,1.0,1.0);
int p=1-250;
int x=0,y=250;
glBegin(GL_POINTS); //画四个与轴的交点
glVertex2i(250,500);
glVertex2i(500,250);
glVertex2i(250,0);
glVertex2i(0,250);
glEnd();
for(int i=0;i<249;i++)
{
if(p<0)
{
x+=1;
p+=2*x+1;
}
else
{
x+=1;
y-=1;
p+=2*x-2*y+1;
}
glBegin(GL_POINTS); //画八个对称点
glVertex2i(x+250,y+250);
glVertex2i(-x+250,y+250);
glVertex2i(x+250,-y+250);
glVertex2i(-x+250,-y+250);
glVertex2i(y+250,x+250);
glVertex2i(-y+250,x+250);
glVertex2i(y+250,-x+250);
glVertex2i(-y+250,-x+250);
glEnd();
}
glFlush();
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(600,600);
glutCreateWindow("0810050225");
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,550.0,0.0,550.0);
glutDisplayFunc(Circle);
glutMainLoop();
}运行结果如下图(多了四条线):[ 本帖最后由 qq1023569223 于 2011-3-24 13:00 编辑 ]




