#include <GL/glut.h>
#include <cmath>

// Función para dibujar un círculo
void drawCircle(float cx, float cy, float r, int num_segments) {
    glBegin(GL_TRIANGLE_FAN);
    for (int i = 0; i < num_segments; i++) {
        float theta = 2.0f * M_PI * float(i) / float(num_segments); // Ángulo actual
        float x = r * cosf(theta); // Calcula la coordenada x
        float y = r * sinf(theta); // Calcula la coordenada y
        glVertex2f(x + cx, y + cy); // Dibuja el punto
    }
    glEnd();
}

// Función de renderizado
void display() {
    glClear(GL_COLOR_BUFFER_BIT); // Limpia el buffer de color
    glColor3f(1.0f, 0.0f, 0.0f);  // Establece el color a rojo (R, G, B)
    drawCircle(0.0f, 0.0f, 0.5f, 100); // Dibuja un círculo en el centro
    glFlush(); // Renderiza la escena
}

// Función principal
int main(int argc, char** argv) {
    glutInit(&argc, argv); // Inicializa GLUT
    glutInitWindowSize(500, 500); // Tamaño de la ventana
    glutCreateWindow("Círculo Rojo en OpenGL"); // Crea la ventana
    glutDisplayFunc(display); // Registra la función de renderizado
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Fondo negro (R, G, B, Alpha)
    glutMainLoop(); // Entra en el bucle principal de GLUT
    return 0;
}

