Programming/openGL

openGL로 싸인곡선 그리기(sin wave)

구차니 2011. 9. 25. 22:02
오랫만에 하려니 sin() 함수가 radian 값을 받는것도 깜박잊고 꽤나 헤매게 만드네..

   
#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glut.h"
#include "math.h"

static int year = 0, day = 0;

void display(void)
{
        int temp;
        glClear(GL_COLOR_BUFFER_BIT);
        glColor3f(1.0, 1.0, 1.0);

        glPushMatrix();
                glBegin(GL_POINT);
                for(temp = 0; temp < 360; temp++)
                {   
                        glVertex3f(0.01*temp - 2,sin(3.1415927/180*temp),0);
                }   
                glEnd();
        glPopMatrix();

        glutSwapBuffers();
}

void reshape(int w, int h)
{
        glViewport(0, 0, (GLsizei) w, (GLsizei) h); 
        glMatrixMode(GL_PROJECTION);
                glLoadIdentity();
                gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
    
        glMatrixMode(GL_MODELVIEW); //GL_PROJECTION
                glLoadIdentity();
                gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

void keyboard(unsigned char key, int x, int y)
{
        switch (key)
        {   
          default:
                  break;
        }   
}

int main(int argc, char** argv)
{
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize(500, 500);
        glutInitWindowPosition(100, 100);
        glutCreateWindow(argv[0]);

        glClearColor(0.0, 0.0, 0.0, 0.0);
        glShadeModel(GL_FLAT); //GL_SMOOTH

        glutDisplayFunc(display);
        glutReshapeFunc(reshape);
        glutKeyboardFunc(keyboard);
        glutMainLoop();
        return 0;
}