Untitled
unknown
c_cpp
2 years ago
1.7 kB
10
Indexable
#include <GL/glut.h> #include <iostream> using namespace std; // Initialize OpenGL void init() { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); glutCreateWindow("Midpoint Ellipse Drawing Algorithm in OpenGL"); glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(-100.0, 100.0, -100.0, 100.0); } // Draw the ellipse using the midpoint algorithm void drawEllipse(int a, int b) { int x = 0, y = b; float d1 = b * b - a * a * b + a * a / 4.0; glPointSize(2.0); glBegin(GL_POINTS); while (a * a * (y - 0.5) > b * b * (x + 1)) { if (d1 < 0) { d1 += b * b * (2 * x + 3); } else { d1 += b * b * (2 * x + 3) + a * a * (-2 * y + 2); y--; } x++; glVertex2i(x, y); glVertex2i(-x, y); glVertex2i(x, -y); glVertex2i(-x, -y); } float d2 = b * b * (x + 0.5) * (x + 0.5) + a * a * (y - 1) * (y - 1) - a * a * b * b; while (y > 0) { if (d2 < 0) { d2 += b * b * (2 * x + 2) + a * a * (-2 * y + 3); x++; } else { d2 += a * a * (-2 * y + 3); } y--; glVertex2i(x, y); glVertex2i(-x, y); glVertex2i(x, -y); glVertex2i(-x, -y); } glEnd(); } // Display the ellipse void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); drawEllipse(60, 30); glFlush(); } // Main function int main(int argc, char** argv) { glutInit(&argc, argv); init(); glutDisplayFunc(display); glutMainLoop(); return 0; }
Editor is loading...