2023年3月30日 星期四

week07余

  Week07 -1

今天上課先去葉正聖老師的網站下載data 跟windows

並解壓縮後將data拉近windows中

開啟windows中的Texture

然後再調整color的數值看看

改變它的顏色

上面圖中的顏色就會被調整了

然後調整vertex可以改變頂點

四個VERTEX代表四個頂點


可以都改變看看

看看哪個典表示哪一個角落

然後老師帶我們了解座標的意思

座標在0跟1之間超過的話會又從0開始

第一節課的最後老師又帶我們複習了期中考的考題

要開始準備了~~

Week07 -2

按裝OPENCV過程要改選像改成ADD開頭的

按裝完成後重新開啟CODEBLOCKS

在setting工具列中開啟compiler


compiler的目錄要加
C:\OpenCV2.1\include

Linker的目錄要加C:\OpenCV2.1\lib

Linker setting要加cv210,cxcore210,highgui210

然後今天的第一個程式

#include <opencv/highgui.h>

int main()

{

    IplImage*img = cvLoadImage("1.jpg");

    cvShowImage("week07",img);

    cvWaitKey(0);

}

圖要自己找然後創建資料夾將程式跟圖放在一起


今天的第二個程式

去老師的網站gist.github.com/jsyeh

然後複製TEXTURE的程式碼

#include <opencv/highgui.h> 

#include <opencv/cv.h>

#include <GL/glut.h>

int myTexture(char * filename)

{

    IplImage * img = cvLoadImage(filename);

    cvCvtColor(img,img, CV_BGR2RGB);

    glEnable(GL_TEXTURE_2D);

    GLuint id; 

    glGenTextures(1, &id); 

    glBindTexture(GL_TEXTURE_2D, id); 

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 

    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);

    return id;

}

Week07 -3

補上下列程式碼

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSolidTeapot( 0.3 );

    glutSwapBuffers();

}

int main(int argc, char**argv)

{

    glutInit( &argc, argv );

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week07 texture");


    glutDisplayFunc(display);

    myTexture("earth.jpg");


    glutMainLoop();

}

earth.jpg的圖片要自己找

圖片要放在freeglut-bin裡面

執行後就會出現貼著地球地圖的酷酷茶壺

然後再新增一些程式碼

 glBegin(GL_POLYGON);

        glTexCoord2f(0,0); glVertex2f(-1,+1);

        glTexCoord2f(1,0); glVertex2f(+1,+1);

        glTexCoord2f(1,1); glVertex2f(+1,-1);

        glTexCoord2f(0,1); glVertex2f(-1,-1);

    glEnd();

茶壺會在地球中間



今天的第三個程式再去老師的網站

然後複製MYEARTH的程式碼

#include <opencv/highgui.h> 

#include <opencv/cv.h>

#include <GL/glut.h>

GLUquadric * sphere = NULL;

int myTexture(char * filename)

{

    IplImage * img = cvLoadImage(filename); 

    cvCvtColor(img,img, CV_BGR2RGB); 

    glEnable(GL_TEXTURE_2D); 

    GLuint id; 

    glGenTextures(1, &id); 

    glBindTexture(GL_TEXTURE_2D, id); 

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 

    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);

    return id;

}

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glRotatef(angle, 0,-1,0);

        glRotatef(90, 1,0,0);

        gluQuadricTexture(sphere, 1);

        gluSphere(sphere, 1, 30, 30);///glutSolidTeapot(0.3);

    glPopMatrix();

    glutSwapBuffers();

    angle++;

}

int main(int argc,char**argv)

{

    glutInit(&argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week10 texture background");


    glutIdleFunc(display);

    glutDisplayFunc(display);

    myTexture("myEarth.jpg");

    sphere = gluNewQuadric();

    glEnable(GL_DEPTH_TEST);


    glutMainLoop();

}

然後再稍微修改圖檔名稱

就會出現在旋轉的地球了~


最後在上傳到GITHUB
cd desktop
git clone https://github.com/dannyyu0521/2023graphicsb
cd 2023graphicsb
將檔案放入資料夾
git status
git add .
git status
git config --global user.email dannyyyu0521@gmail.com
git config --global user.name dannyyu0521
git commit -m "add week07"
git push

沒有留言:

張貼留言