顯示具有 02161025_陳曉彤 標籤的文章。 顯示所有文章
顯示具有 02161025_陳曉彤 標籤的文章。 顯示所有文章

2015年5月20日 星期三

WEEK13

#include<GL/glut.h>
#include"CMP3_MCI.h"
CPM3_MCI MyMp3;
float eyeX=-100,eyeY=80, eyeZ=-200;
void display()
{
    GLfloat pos[]={0,0,200,0};
    glLightfv(GL_LIGHT0,GL_POSITION,pos);
    glEnable(GL_LIGHT0);
    glEnable(GL_NOROMALIZE);
    glEnable(GL_LIGHTING);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BIT);
    glPushMatrix();
    glutLookAt(eyeX,eyeY,eyeZ,0,0,0,0,1,0);
    glPushMatrix();
    glutSolidTeapot(100);
    glPopMatrix();
    glFlsuh();
}
void motion(int x, tin y)
{
    eyeX=x-400;eyeY=300-y;
    glutPostRedisplay();
   
}
void reshape(int w , int h)
{
    glViewPort(0,0,w,h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-w/2,w/2,-h/2,h/2,-1000,1000);
    glMatrixMode(GL_MODELVIEN);
    glLoadIdentity();
   
   
}
viod timer(int t)
{
    glutTimerFunc(20,timer,t+1);
    eyeX+=2;
    if(eyeX>300)eyeY+=4;
    glutPostRedisplay();
}
void keyboard(unsigned char key, int x,int y)
{
MyMP3.Play(); 
}
int main(int argc,char ** argv)
{
    glutInit(&argc, argv)
    glutInitWindowSize(800,600);
    glutCreateWINDOW("3D");
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutMotionFunc(motion);
    glutTimerFunc(0,timer,0);
    glutKeyboardFunc(keyboard);
    MyMP3.Load("music.mp3");
    glutMainLoop();
}

2015年5月13日 星期三

week11









模型
#include "glm.h"
GLMmodel * pmodel = NULL;

void display()
{
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
    glFlush();
}

int main(int argc, char**argv)
{

    pmodel = glmReadOBJ("porsche.obj");
    glmUnitize(pmodel);
    glmFacetNormals(pmodel);
    glmVertexNormals(pmodel, 90.0);

    glutInit(&argc, argv);
    glutCreateWindow("GLUT");
    glutDisplayFunc(display);
    glutMainLoop();
}
上色
#include "glm.h"
GLMmodel * pmodel = NULL;

void display()
{
    GLfloat pos[] = {0.0,0.0,-1.0,0.0};
    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
    glFlush();
}

int main(int argc, char**argv)
{

    pmodel = glmReadOBJ("porsche.obj");
    glmUnitize(pmodel);
    glmFacetNormals(pmodel);
    glmVertexNormals(pmodel, 90.0);

    glutInit(&argc, argv);
    glutCreateWindow("GLUT");
    glutDisplayFunc(display);
    glutMainLoop();
}

2015年5月6日 星期三

week11

#include <opencv/highgui.h> ///for cvLoadImage()
#include <opencv/cv.h> ///for cvCvtColor()
#include <GL/glut.h> ///3D glut
float angle=0; ///自動轉很帥
void display()
{   glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確
    glClear(GL_COLOR_BUFFER_BIT  | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///自動轉很帥
        glRotatef(angle, 0,1,0);///自動轉很帥
        glutSolidTeapot(0.3);
    glPopMatrix();///自動轉很帥
    glFlush();
    angle+=0.1;///自動轉很帥
}
void myInit()
{   IplImage * img = cvLoadImage("image.jpg"); ///OpenCV讀圖
    cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)
    glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能
    GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID
    glGenTextures(1, &id); /// 產生Generate 貼圖ID
    glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /// 貼圖參數, 放大時的內插, 用最近點
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); /// 貼圖參數, 縮小時的內插, 用最近點
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
}   ///最後一行最難/最重要, 所有貼圖影像的資料都設定好
int main(int argc, char**argv)
{   glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display); ///顯示
    glutIdleFunc(display);///自動轉很帥 (閒閒沒事幹, 就重畫)
    myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
    glutMainLoop();
}

2015年4月29日 星期三

茶壺

 

1.OpenCV 2.1 設定讀圖
2.OpenGL 的專案設定
3.設定貼圖

#include <opencv/highgui.h>
#include <GL/glut.h>
#include <opencv/cv.h>
float angle=0;
void display()
{
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle,0,1,0);
        glutSolidTeapot(0.8);
    glPopMatrix();
    glFlush();
    angle+=0.1;
}
void myInit()
{   IplImage * img = cvLoadImage("image.jpg"); ///OpenCV讀圖
    cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)
    glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能
    GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID
    glGenTextures(1, &id); /// 產生Generate 貼圖ID
    glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /// 貼圖參數, 放大時的內插, 用最近點
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); /// 貼圖參數, 縮小時的內插, 用最近點
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
}   ///最後一行最難/最重要, 所有貼圖影像的資料都設定好
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    myInit();
    glutMainLoop();
}

2015年4月15日 星期三

week08


#include<stdio.h>
#include<GL/glut.h>
#include<mmsystem.h>
float potX=-1,potY=0;
void display()
{
    glClearColor(0.5,0.5,1,0);
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(potX,potY,0);
        glutSolidTeapot(0.05);
    glPopMatrix();
    glFlush();
    potX+=0.001;
    if(potX>1.1)potX=-1.1;
}
void keyboard(unsigned char key,int x,int y)
{
    exit(0);
}
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN)
    {
        PlaySound("Data/Shot.wav",NULL,SND_ASYNC);
        printf("Shot!!!\n");
        float mouseX=2*x/1280.0 -1,mouseY=-(2*y/1024.0-1);
        if(abs(mouseX-potX)<0.001&&abs(mouseY-potY)<0.001){
            printf("YA! Got it!\n");
            PlaySound("Data/elephant.wav",NULL,SND_ASYNC);
        }
    }
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("hello");
    glutFullScreen();
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMainLoop();
}




 

2015年4月8日 星期三

WEEK07

#include<GL/glut.h>
#include<mmsystem.h> //加聲音的開頭檔
#include<stdio.h>
void display()
{
    glutSolidTeapot(0.3);
    glFlush();
}
void keyboard(unsigned char key, int x, int y)
{
    if(key=='a'){printf("AAA\n");}
    else if(key=='b'){printf("BBB\n");}
}
void mouse(int button, int state, int x, int y)
{
    printf("now play sound\n");
    PlaySound("madmoo.wav",NULL,SND_ASYNC);
}
int main(int arge, char ** argv)
{
    glutInit(&arge, argv);
    glutCreateWindow("hello");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMainLoop();

}

2015年3月27日 星期五

2D正方形
\
#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle,0,1,0);
    glBegin(GL_POLYGON);
        glColor3f(1,0,0);
        glVertex3f(0.1,0.1,0.8);
        glVertex3f(-0.1,0.1,0.8);
        glVertex3f(-0.1,-0.1,0.8);
        glVertex3f(0.1,-0.1,0.8);
    glEnd();
    glPopMatrix();
    angle+=0.01;
    glFlush();
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();

}



3D正方形
                           

#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef( angle,0,1,0.5);
        glBegin(GL_POLYGON);
            glColor3f(1,0,0);
            glVertex3f(0.1,0.1,0.8);
            glVertex3f(-0.1,0.1,0.8);
            glVertex3f(-0.1,-0.1,0.8);
            glVertex3f(0.1,-0.1,0.8);
        glEnd();

        glBegin(GL_POLYGON);
            glColor3f(1,1,0);
            glVertex3f(0.1,0.1,-0.8);
            glVertex3f(-0.1,0.1,-0.8);
            glVertex3f(-0.1,-0.1,-0.8);
            glVertex3f(0.1,-0.1,-0.8);
        glEnd();

        glBegin(GL_QUAD_STRIP);
        glColor3f(1,1,2);
            glVertex3f(0.1,0.1,0.8);
            glVertex3f(0.1,0.1,-0.8);
            glVertex3f(-0.1,0.1,0.8);
            glVertex3f(-0.1,0.1,-0.8);
            glVertex3f(-0.1,-0.1,0.8);
            glVertex3f(-0.1,-0.1,-0.8);
            glVertex3f(0.1,-0.1,0.8);
            glVertex3f(0.1,-0.1,-0.8);
        glEnd();
    glPopMatrix();
    angle +=0.01;
    glFlush();
}
int oldX=0;  //宣告座標
void motion(int x,int y)
{
    angle +=(x-oldX);  //利用新座標去舊的得新的角度
    oldX=x;
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02161025flight");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMotionFunc(motion);  //移動函示
    glutMainLoop();
}


2015年3月18日 星期三

week04

                                                                #include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glTranslated(0.2,0,0);
    glRotatef(angle, 0,1,0);
    glutWireTorus(0.3,0.5,30,30);
    glutSolidTeapot(0.12);
    glPopMatrix();
    glFlush();
    angle+=0.1;
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("02160740 cash");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}