2021年3月15日 星期一

JOJO的電腦圖學_week04

210315  week04

🔔 ❤️

畫茶壺的100種方法



參考week03的步驟


印出座標的部分(1)

點擊出現的圖片,就會跑出相對應的位置












(更改部分為豆沙粉色

#include <GL/glut.h>///(0)使用GLUT外掛
#include <stdio.h>///TODO

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清空

    glutSolidTeapot(0.3);///實心茶壺(改變大小)
    glutSwapBuffers();///交換兩倍的Buffers
}

void mouse(int button,int state,int x,int y)///TODO
{
    printf("button:%d state:%d x:%d y:%d\n",button,state,x,y);
}///TODO:印出來

int main(int argc, char**argv)///???以前是int main()
{
    glutInit(&argc,argv);///(1)GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160891我是JOJO");///(3)開窗

    glutDisplayFunc(display);///(4)等一下要顯示的函式(display顯示函式)
    glutMouseFunc(mouse);///TODO:(1)mouse滑鼠的程式
    glutMainLoop();///(5)主要迴圈
}

印出座標的部分(2)(可偷小黑的程式碼來用)

加上這些程式碼如何啊?
void mouse
void mouse(int button,int state,int x,int y)///TODO
{
    if(state==GLUT_DOWN)
    {
        printf("    glVertex3f((%d-150)/150.0,-(%d-150)/150.0,0);\n",x,y);
    }

}///TODO:印出來


複(偷)製(個)小黑出現的程式碼

將偷來的程式碼放入void display函式當中>
就會出現...神奇的多邊形
放入void display函式
放入void display函式
放入void display函式

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清空

   // glutSolidTeapot(0.3);///實心茶壺(改變大小)
   glBegin(GL_POLYGON);///不規則形
    glVertex3f((120-150)/150.0,-(129-150)/150.0,0);
    glVertex3f((127-150)/150.0,-(130-150)/150.0,0);
    glVertex3f((131-150)/150.0,-(129-150)/150.0,0);
    glVertex3f((133-150)/150.0,-(126-150)/150.0,0);
    glVertex3f((138-150)/150.0,-(122-150)/150.0,0);
    glVertex3f((159-150)/150.0,-(122-150)/150.0,0);
    glVertex3f((176-150)/150.0,-(130-150)/150.0,0);
    glVertex3f((183-150)/150.0,-(134-150)/150.0,0);
    glVertex3f((189-150)/150.0,-(143-150)/150.0,0);
    glVertex3f((195-150)/150.0,-(156-150)/150.0,0);

    glEnd();

    glutSwapBuffers();///交換兩倍的Buffers
}


讓茶壺移動的100種方法

(1)茶壺跟著滑鼠的移動(緩慢版本)

用以下程式試試看吧!
(主要更改部分為豆沙粉色

#include <GL/glut.h>///(0)使用GLUT外掛
#include <stdio.h>///TODO
float teapotX=0,teapotY=0;///TODO2:茶壺的座標

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清空

   glPushMatrix();
        glTranslatef(teapotX,teapotY,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glEnd();
    glutSwapBuffers();///交換兩倍的Buffers
}

void motion(int x,int y)
{
    teapotX=(x-150)/150.0;
    teapotY=-(y-150)/150.0;
}
int main(int argc, char**argv)///???以前是int main()
{
    glutInit(&argc,argv);///(1)GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160891我是JOJO");///(3)開窗

    glutDisplayFunc(display);///(4)等一下要顯示的函式(display顯示函式)
    //glutMouseFunc(mouse);///TODO:(1)mouse滑鼠的程式
    glutMotionFunc(motion);///TODO:(1)mouse滑鼠的程式
    glutMainLoop();///(5)主要迴圈
}

(2)茶壺跟著滑鼠的移動(快速版本)

teapotX=(x-150)/150.0;
teapotY=-(y-150)/150.0;
下面一行
display();


    以下圖片有 👉詳細解釋👈


小葉老師提供的小遊戲!


X軸改變數字(觀察車子移動方向)
(可利用安培右手定則來幫助理解)


Y軸改變數字(觀察車子移動方向)

Z軸改變數字(觀察車子移動方向)

X、Y軸改變數字(觀察車子移動方向)

X、Y軸改變數字(X改為負數)(觀察車子移動方向)


Github~建立自己的第一個網站吧!

左上角New建立一個新的主題

(1)名稱是自己的帳號明加上github.io(不能打錯)
(2)打上自我介紹
(3)照著下面的步驟打勾

自我介紹的部分(編輯篇~)












自我介紹的部分(結果篇~)












選取main>View all branches


打gh-pages(不能打錯)
恭喜你設定好自己的網頁了!!!


番外篇~放圖片的方法

上網找喜歡的圖片,將其網址複製>直接貼到編輯區

ex.[名稱](圖片網址)>要點"名稱"才會出現圖片
      ![名稱](圖片網址)>在完成頁面就能夠看到圖片

也在你的網頁介紹上放上帥氣的翔醬吧!


如果喜歡我的部落格的話
請幫我按右上角的愛心(根本按不下去)
也可以按右上角的小鈴鐺(這也按不下去)
才不會錯過我的更新哦!😉


沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...