2017年3月13日 星期一

Week 03 甄臻紀錄



Homework-1

freeglut解壓縮
new→project
GLUT


main.c→齒輪播放建
沿用上一個程式,並刪除多餘的程式碼,保留剩下所需的10行程式碼

#include <GL/glut.h>
void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("60CCE NO.1");
    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    ///glutMotionFund(motion);
    glutMainLoop();
}

新增滑鼠事件
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y);
{
    printf("%d %d %d %d\n",button,state,x,y);///第二個數字,0為按下、1為放開
}
void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("60CCE NO.1");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);///Test the mouse func
    ///glutMotionFund(motion);
    glutMainLoop();
}

利用滑鼠改變顏色
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y);
{
    printf("%d %d %d %d\n",button,state,x,y);
    glColor3f(1,x/300.0,y/300.0);///R,G,B
    glutPostRedisplay();
}
void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("60CCE NO.1");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    ///glutMotionFund(motion);
    glutMainLoop();
}

拖曳滑鼠即可改變顏色
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y);
{
    printf("%d %d %d %d\n",button,state,x,y);
}
void motion(int x,int y)
{
    printf("%d %d\n",x,y);
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}
void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(300,300);///改變視窗大小
    glutCreateWindow("60CCE NO.1");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFund(motion);
    glutMainLoop();
}

利用程式碼產生新的程式碼畫出圖形

#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y);
{
   if(state==GLUT_DOWN)printf("glVertex2f(%.2f,%.2f);\n",(x-150)/150.0,-(y-150)/150.0);
}
void motion(int x,int y)
{
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}
void display(void)
{
    glBegin(GL_POLYGON);
        glVertex2f(0.03,-0.47);
        glVertex2f(-0.05,-0.45);
        glVertex2f(-0.17,-0.37);
        glVertex2f(-0.17,-0.37);
        glVertex2f(-0.23,-0.32);
        glVertex2f(-0.41,-0.19);
        glVertex2f(-0.47,-0.14);
        glVertex2f(-0.51,-0.10);
        glVertex2f(-0.54,-0.03);
        glVertex2f(-0.59,0.16);
        glVertex2f(-0.57,0.28);
        glVertex2f(-0.54,0.33);
        glVertex2f(-0.47,0.38);
        glVertex2f(-0.39,0.39);
        glVertex2f(-0.33,0.40);
        glVertex2f(-0.19,0.39);
        glVertex2f(-0.15,0.35);
        glVertex2f(-0.13,0.30);
        glVertex2f(-0.08,0.25);
        glVertex2f(-0.08,0.23);
        glVertex2f(0.09,0.31);
        glVertex2f(0.15,0.41);
        glVertex2f(0.24,0.42);
        glVertex2f(0.25,0.42);
        glVertex2f(0.32,0.41);
        glVertex2f(0.49,0.41);
        glVertex2f(0.51,0.33);
        glVertex2f(0.53,0.22);
        glVertex2f(0.53,0.15);
        glVertex2f(0.51,-0.02);
        glVertex2f(0.43,-0.17);
        glVertex2f(0.40,-0.22);
        glVertex2f(0.33,-0.27);
        glVertex2f(0.25,-0.32);
        glVertex2f(0.21,-0.36);
        glVertex2f(0.11,-0.44);
        glVertex2f(0.09,-0.45);
        glVertex2f(0.05,-0.50);
        glVertex2f(0.04,-0.52);
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(300,300);
    glutCreateWindow("60CCE NO.1");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFund(motion);
    glutMainLoop();
}

利用程式碼畫圓
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN)printf("glVertex2f(%.2f,%.2f);\n",(x-150)/150.0,-(y-150)/150.0);

}
void motion(int x,int y)
{
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}
void display(void)
{
    glBegin(GL_POLYGON);
    for(float angle=0;angle<3.1415926*2;angle+=0.01)
    {
        glVertex2f(cos(angle),sin(angle));
    }
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(300,300);
    glutCreateWindow("60CCE NO.1");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFund(motion);
    glutMainLoop();
}

改變程式碼以線畫圓
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN)printf("glVertex2f(%.2f,%.2f);\n",(x-150)/150.0,-(y-150)/150.0);

}
void motion(int x,int y)
{
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}
void display(void)
{
    glBegin(GL_LINE_LOOP);
    for(float angle=0;angle<3.1415926*2;angle+=0.01)
    {
        glVertex2f(cos(angle),sin(angle));
    }
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(300,300);
    glutCreateWindow("60CCE NO.1");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFund(motion);
    glutMainLoop();
}

沒有留言:

張貼留言