OpenGL

[OpenGL] 원 그리기

Let it out 2024. 2. 20. 20:00
안이 채워져 있는 원 그리기
#include <GL/freeglut.h>
#include <math.h>

void draw(void)
{
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0f, 0.0f, 0.0f);

    double rad = 0.5;

    glBegin(GL_POLYGON);
    for (int i = 0; i < 360; i++)
    {
        double angle = i * 3.141592 / 180;
        double x = rad * cos(angle);
        double y = rad * sin(angle);
        glVertex2f(x, y);
    }
    glEnd();
    glFinish();

}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowPosition(800, 200);
    glutCreateWindow("Example");

    glutDisplayFunc(draw);
    glutMainLoop();
}
 

실행 결과

 

 

 
 

 

안이 비워져 있는 원 그리기

#include <GL/freeglut.h>
#include <math.h>

void draw(void)
{
    //안이 비워져있느 원 그리기
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0f, 0.0f, 0.0f);

    double rad = 0.5;

    double x[360], y[360];
    glBegin(GL_LINES);

    for (int i = 0; i < 360; i++) {
        double angle;
        angle = i * 3.141592 / 180;
        x[i] = rad * cos(angle);
        y[i] = rad * sin(angle);
    }
    for (int i = 0; i < 359; i++) {
        glVertex2f(x[i], y[i]);
        glVertex2f(x[i + 1], y[i + 1]);
    }
    glEnd();
    glFinish();

}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowPosition(800, 200);
    glutCreateWindow("Example");

    glutDisplayFunc(draw);
    glutMainLoop();
}
 
 

실행 결과

 

 

 

반응형