Advertisement
mhdew

Mid Point Circle Drawing Algorithm

Oct 7th, 2020
1,911
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. #include <GL/gl.h>
  2. #include <GL/glut.h>
  3. void display(void)
  4. {
  5.     glClear (GL_COLOR_BUFFER_BIT);
  6.  
  7.     glColor3f (1.0, 1.0, 1.0);
  8.  
  9.     int x=0, y=40;
  10.     int p=1-y;
  11.  
  12.     int ax[1111];
  13.     int ay[1111];
  14.     int idx=0;
  15.     ax[idx]=x;
  16.     ay[idx++]=y;
  17.     while(1){
  18.         if(p<0){
  19.             x++;
  20.             p=p+(2*x)+1;
  21.         }
  22.         else{
  23.             x++;
  24.             y--;
  25.             p=p+(2*x)+1-2*y;
  26.         }
  27.         ax[idx]=x;
  28.         ay[idx++]=y;
  29.         if(x>=y) break;
  30.     }
  31.  
  32.     glBegin(GL_POINTS);
  33.     int tx,ty;
  34.     for(int i=0;i<idx;i++){
  35.         tx=ax[i]*(-1);
  36.         ty=ay[i]*(-1);
  37.  
  38.         glVertex2d(ax[i],ay[i]);
  39.         glVertex2d(tx,ay[i]);
  40.         glVertex2d(ax[i],ty);
  41.         glVertex2d(tx,ty);
  42.  
  43.         glVertex2d(ay[i],ax[i]);
  44.         glVertex2d(ty,ax[i]);
  45.         glVertex2d(ay[i],tx);
  46.         glVertex2d(ty,tx);
  47.     }
  48.  
  49.     glColor3f (1.0, 0.0, 0.0);
  50.  
  51.     for(int i=-60;i<=60;i++){
  52.         glVertex2d(0,i);
  53.         glVertex2d(i,0);
  54.     }
  55.  
  56.  
  57.     glEnd();
  58.  
  59.     glFlush ();
  60. }
  61.  
  62. void init (void){
  63.    
  64.     glClearColor (0.0, 0.0, 0.0, 0.0);
  65.    
  66.     glMatrixMode(GL_PROJECTION);
  67.     glLoadIdentity();
  68.     gluOrtho2D(-100,100,-100,100);      //fix the windows size
  69. }
  70.  
  71. int main(int argc, char** argv)
  72. {
  73.     glutInit(&argc, argv);
  74.     glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  75.     glutInitWindowSize (1000, 1000);
  76.     glutInitWindowPosition (50, 50);
  77.     glutCreateWindow ("172-15-9804");
  78.     init ();
  79.     glutDisplayFunc(display);
  80.     glutMainLoop();
  81.    
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement