Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <GL/glut.h>
- #include<math.h>
- void init2D(float r, float g, float b)
- {
- glClearColor(r,g,b,0.0);
- glMatrixMode (GL_PROJECTION);
- gluOrtho2D (0.0, 200.0, 0.0, 150.0);
- }
- void DrawCircle(float cx, float cy, float r, int num_segments)
- {
- float theta = 2 * 3.1415926 / float(num_segments);
- float tangetial_factor = tanf(theta);//calculate the tangential factor
- float radial_factor = cosf(theta);//calculate the radial factor
- float x = r;//we start at angle = 0
- float y = 0;
- glBegin(GL_POLYGON);
- glColor3f(50.0f,0.0f,0.f);
- for(int ii = 0; ii < num_segments; ii++)
- {
- glVertex2f(x + cx, y + cy);//output vertex
- float tx = -y;
- float ty = x;
- x += tx * tangetial_factor;
- y += ty * tangetial_factor;
- x *= radial_factor;
- y *= radial_factor;
- }
- glEnd();
- }
- void display(void)
- {
- glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
- glClear(GL_COLOR_BUFFER_BIT);
- DrawCircle(100.0f, 50.0f, 26.0f, 50.0f);
- glColor3f(1.0,1.0,1.0);
- glLineWidth(5);
- glBegin(GL_POLYGON);
- glVertex2i(5,10);
- glVertex2i(165,10);
- glVertex2i(180,20);
- glVertex2i(20,20);
- glEnd();
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glBegin(GL_POLYGON);
- glVertex2i(22,20);
- glVertex2i(40,20);
- glVertex2i(40,50);
- glVertex2i(22,50);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex2i(50,20);
- glVertex2i(70,20);
- glVertex2i(70,60);
- glVertex2i(50,60);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex2i(80,20);
- glVertex2i(120,20);
- glVertex2i(120,90);
- glVertex2i(80,90);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex2i(130,20);
- glVertex2i(150,20);
- glVertex2i(150,60);
- glVertex2i(130,60);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex2i(160,20);
- glVertex2i(179,20);
- glVertex2i(179,50);
- glVertex2i(160,50);
- glEnd();
- glBegin(GL_POLYGON);
- glVertex2i(80,90);
- glVertex2i(120,90);
- glVertex2i(130,100);
- glVertex2i(90,100);
- glEnd();
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- glFlush();
- }
- //////////////////////////////////////////////////////////////////////////////////////
- void main(int argc,char *argv[])
- {
- glutInit(&argc,argv);
- glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
- glutInitWindowSize (500, 500);
- glutInitWindowPosition (100, 100);
- glutCreateWindow ("points and lines");
- init2D(0.0,0.0,0.0);
- glutDisplayFunc(display);
- glutMainLoop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement