// simple.cpp 
#include<iostream.h>
#include"GL/glut.h"
#include"math.h"

int r=90;

float sec=360;
float min=360;


void plotf(float x,float y)
{
    glColor3f(1,1,1);
	glPointSize(4);
	glBegin(GL_POINTS);
     glVertex2f(x,y);
     glVertex2f(-x,y);
     glVertex2f(x,-y);
     glVertex2f(-x,-y);
     glVertex2f(y,x);
     glVertex2f(-y,x);
     glVertex2f(y,-x);
     glVertex2f(-y,-x);
   glEnd();

}

void circle(int r)
{
	double p;
	p=1-r;
	float x=0,y=r,step;

    step=0.1;
		   
	plotf(x,y);
	
	   while(x<y)
			  { 
			x=x+step; 
				  if(p<0)                
				    p=p+2*x+1;
				  else
				  {
				     
                      
					  p=p+2*x+1-2*y+2;
					  y=y-step;

				  }
	
               plotf(x,y); 

			  }
		 

     cout<<x<<"  "<<y<<endl; 

}

void draw()
{
  
  circle(r) ;
  glPointSize(10);
  glColor3f(0,1,0);

   glBegin(GL_POINTS);
     glVertex2f(0,0);
     glVertex2f(0,r);
	 glVertex2f(0,-r);
	 glVertex2f(r,0);
	 glVertex2f(-r,0);

	 glVertex2f(63.26,63.26);
	 glVertex2f(63.26,-63.26);
	 glVertex2f(-63.26,63.26);
	 glVertex2f(-63.26,-63.26);

	 

   glEnd();
   
  
}
void display()
{
  glClear(GL_COLOR_BUFFER_BIT);
   
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(-100,100,-100,100);

  draw();
   
  glPushMatrix();
   glColor3f(1,1,0);
  
   glRotatef(sec,0,0,1);
   glLineWidth(4.0);
   glBegin(GL_LINES);
      glVertex2f(0,0);
      glVertex2f(0,r);
   glEnd();
  glPopMatrix();

   glPushMatrix();
   glColor3f(1,0,1);
   glRotatef(min,0,0,1);
   glLineWidth(3.0);
   glBegin(GL_LINES);
      glVertex2f(0,0);
      glVertex2f(0,r);
   glEnd();
   glPopMatrix();

   
    

  glutSwapBuffers();

}

void animation()
{

	if(sec>0)
	{
		sec=sec-0.1;
	}
	else
	{
		sec=360;
		min=min-1;
	}

	if(min<0)
		min=360;

	glutPostRedisplay();
}
void special(int key, int x, int y)
{
	if(key==GLUT_KEY_F1)
		glutIdleFunc(animation);

	else
	  if(key==GLUT_KEY_F2)
		glutIdleFunc(0);

}
void main(int argc,char *argv[])
{
    glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_DOUBLE |GLUT_RGB);
	glutCreateWindow("Test");
	glutFullScreen();
	glutSpecialFunc(special);
	glutDisplayFunc(display);
	glutMainLoop();
}