Advertisement
rana1704

Shaheed Minar

Dec 1st, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <GL/glut.h>
  2. #include<math.h>
  3.  
  4.  
  5. void init2D(float r, float g, float b)
  6. {
  7.         glClearColor(r,g,b,0.0);
  8.         glMatrixMode (GL_PROJECTION);
  9.         gluOrtho2D (0.0, 200.0, 0.0, 150.0);
  10. }
  11. void DrawCircle(float cx, float cy, float r, int num_segments)
  12. {
  13.  
  14.     float theta = 2 * 3.1415926 / float(num_segments);
  15.     float tangetial_factor = tanf(theta);//calculate the tangential factor
  16.  
  17.     float radial_factor = cosf(theta);//calculate the radial factor
  18.  
  19.     float x = r;//we start at angle = 0
  20.  
  21.     float y = 0;
  22.  
  23.     glBegin(GL_POLYGON);
  24.     glColor3f(50.0f,0.0f,0.f);
  25.     for(int ii = 0; ii < num_segments; ii++)
  26.     {
  27.         glVertex2f(x + cx, y + cy);//output vertex
  28.         float tx = -y;
  29.         float ty = x;
  30.  
  31.         x += tx * tangetial_factor;
  32.         y += ty * tangetial_factor;
  33.  
  34.         x *= radial_factor;
  35.         y *= radial_factor;
  36.     }
  37.     glEnd();
  38. }
  39.  
  40.  
  41. void display(void)
  42. {
  43.         glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
  44.     glClear(GL_COLOR_BUFFER_BIT);
  45.  
  46.         DrawCircle(100.0f, 50.0f, 26.0f, 50.0f);
  47.     glColor3f(1.0,1.0,1.0);
  48.     glLineWidth(5);
  49.  
  50.         glBegin(GL_POLYGON);
  51.         glVertex2i(5,10);
  52.         glVertex2i(165,10);
  53.         glVertex2i(180,20);
  54.         glVertex2i(20,20);
  55.     glEnd();
  56.  
  57.     glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
  58.  
  59.  
  60.         glBegin(GL_POLYGON);
  61.         glVertex2i(22,20);
  62.         glVertex2i(40,20);
  63.         glVertex2i(40,50);
  64.         glVertex2i(22,50);
  65.     glEnd();
  66.  
  67.         glBegin(GL_POLYGON);
  68.         glVertex2i(50,20);
  69.         glVertex2i(70,20);
  70.         glVertex2i(70,60);
  71.         glVertex2i(50,60);
  72.     glEnd();
  73.  
  74.         glBegin(GL_POLYGON);
  75.         glVertex2i(80,20);
  76.         glVertex2i(120,20);
  77.         glVertex2i(120,90);
  78.         glVertex2i(80,90);
  79.     glEnd();
  80.  
  81.         glBegin(GL_POLYGON);
  82.         glVertex2i(130,20);
  83.         glVertex2i(150,20);
  84.         glVertex2i(150,60);
  85.         glVertex2i(130,60);
  86.     glEnd();
  87.  
  88.         glBegin(GL_POLYGON);
  89.         glVertex2i(160,20);
  90.         glVertex2i(179,20);
  91.         glVertex2i(179,50);
  92.         glVertex2i(160,50);
  93.     glEnd();
  94.  
  95.         glBegin(GL_POLYGON);
  96.         glVertex2i(80,90);
  97.         glVertex2i(120,90);
  98.         glVertex2i(130,100);
  99.         glVertex2i(90,100);
  100.     glEnd();
  101.  
  102.     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
  103.  
  104.     glFlush();
  105. }
  106. //////////////////////////////////////////////////////////////////////////////////////
  107. void main(int argc,char *argv[])
  108. {
  109.         glutInit(&argc,argv);
  110.         glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  111.         glutInitWindowSize (500, 500);
  112.         glutInitWindowPosition (100, 100);
  113.         glutCreateWindow ("points and lines");
  114.         init2D(0.0,0.0,0.0);
  115.         glutDisplayFunc(display);
  116.         glutMainLoop();
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement