2024年6月19日 星期三

啵咕咕的筆記

#WEEK01

加入Blogger

設定品牌

下載freeglut將freeglut.a復製改檔案名稱libglut32.a

file-new-project   檔案路徑設桌面和freeglut



2024年6月13日 星期四

C~電腦圖學日誌 Week17

Week17 總複習

1. 程式碼要捨得刪,太多太複雜難除錯

2. 除錯一步一步慢慢解


week12

 ##week12-1_glm_gundam_handA_handB

0.安裝freeglut,把lib\libfreeglut.a複製成libglut32.a

1.File-New-Project,GLUT專案week12-1_glm_gundam_handA_handB

2.先安裝openCV,CodeBlocks要重開
3.要改環境Search directories->Compiler 增加 C:\OpenCV2.1\include
4.Search directories->Linker 增加 C:\OpenCV2.1\lib
Linker settings-> 增加 cv210、cxcore210、highgui210
5.載git hub把第11周的11-2 抓下來就可以了

6.myBody();刪掉,改成glutSolidSphere(0.1,30,30);
7.glRotatef(angle++,0,0,1);把旋轉刪掉不讓轉動
8.glRotatef(angle++,0,0,1);加回這個讓他轉動
9.把handB的程式碼加進去 
10.改個glTranslatef()的座標

##week12-2_glm_gundam_upper_lower

用Notepad++ 改名稱改成week12-2_glm_gundam_upper_lower

多加兩行程式碼
GLMmodel * upperA = NULL;
GLMmodel * lowerA = NULL;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
      glDisable(GL_TEXTURE_2D);///把貼圖先功能關掉,不然手會被擋住
      ///myBody();
    glutSolidSphere(0.1,30,30);
    glEnable(GL_TEXTURE_2D);///再把貼圖功能開起來,才能draw
    glColor3f(1,1,1);
    
    drawUpperA();///(3)上手臂放好
    
    glPushMatrix(); ///(0)
        glTranslatef();///(3)再掛到上手臂的位置
        glRotatef(angle++,0,0,1);///(2) z軸轉
        glTranslatef(0,-0.2,0);///(1)
        drawLowerA(); ///(0)
    glPopMatrix(); ///(0)
    glutSwapBuffers();///(0)
}


angle += da; 一直加da到一定角度就彈回去
    if(angle>90) da=-1; 到90度就回彈,da會變成-1
    if(angle<0) da=+1;到0度就回彈,da會變成+1


week12-3_glm_gundam_keyboard_angleID_mouse_motion_angle

glPushMatrix();
glRotatef(angle,0,0,1);
gltranslatef(0,-0.07,0);
    drawUpperA();///(3)上手臂放好

     glPushMatrix(); ///(0)
         glTranslatef(-0.02,-0.09,0);///(3)再掛到上手臂的位置
         ///glRotatef(angle,1,0,0);///(2) z軸轉
         glTranslatef(0,-0.21,0);///(1)
         drawLowerA(); ///(0)
     glPopMatrix(); ///(0)
    glPopMatrix();

    glutSwapBuffers();///(0)

week17

 學期總複習

week11

 ##week11-1_TRT_again

先設定環境

0.安裝freeglut,把lib\libfreeglut.a複製成libglut32.a

1.File-New-Project,GLUT專案week11-1_TRT_again

貼上10-12的程式碼再加上

glTranslatef(0.3,0.2,0);

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

        glTranslatef(0.15,0,0);


week11-2_glm_gundam_opencv_texture_lighting
1.File-New-Project,GLUT專案week11-2_glm_gundam_opencv_texture_lighting
2.先安裝openCV,CodeBlocks要重開
3.要改環境Search directories->Compiler 增加 C:\OpenCV2.1\include
4.Search directories->Linker 增加 C:\OpenCV2.1\lib
5.Linker settings-> 增加 cv210、cxcore210、highgui210
6.///GLMmodel * pmodel = NULL;改成/
7.GLMmodel * pmodel = NULL;
8.GLMmodel * handa = NULL;
9.GLMmodel * handb = NULL;
10.void drawmobel(void)->void drawHanda(void)
11.pmodel有這個的都改成handa
void myBody(){ ///我的身體
    glPushMatrix();///備分矩陣
        glColor3f(1,0,0);///紅色的
        glutSolidCube(0.6);///mybody  但是空心變實心solid才能正確打
    glPopMatrix();///還原矩陣
}
float angle = 0; ///加這行, 讓它轉動
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glDisable(GL_TEXTURE_2D);///把貼圖先功能關掉,不然手會被擋住
    myBody();
    glEnable(GL_TEXTURE_2D);///再把貼圖功能開起來,才能draw
    glColor3f(1,1,1);
    glPushMatrix(); ///加這行, 讓它轉動
        glRotatef(angle++, 0, 1, 0); ///加這行, 讓它轉動
        drawHanda();
    glPopMatrix(); ///加這行, 讓它轉動
    glutSwapBuffers();



Week17 最後的部落格

1.老師重新教學一遍如何製作模組


期末作業總複習

田糾集跟你說你好

 1.下禮拜(18周就是期末作品繳交了)

2.老師教了用茶壺程式碼找定位

有錄影

大致上就是從零開始打

///T

///R

///T

訣竅就是建立一個圓球找軸心

用茶壺程式碼找座標

偷座標

先做末梢

再drawbody()

電腦圖學 Week17

 # Week16

#week16-0_sample

先設定好開發環境

  1. freeglut

  2. OpenCV 2.1 (小心 Add PATH)

  3. Settings Compiler Settings 三個設定

    1. C:\OpenCV2.1\include
    2. C:\OpenCV2.1\lib
    3. cv210 cxcore210 highgui210

Lwy_week17

##week17

 

1.opencv三個設定

2.設定codeblocks

- C:\OpenCV2.1\include

- C:\OpenCV2.1\lib

- cv210 cxcore210 highgui210

Week17

Han Week17

 ##WEEK17

罐頭's 電腦圖學日記 Week17

  week17  

##week17-0

float teapotX=0, teapotY=0;///第3-4週教的技巧

void motion(int x,int y){
    if(1){
        teapotX += (x - oldX)/150.0;
        teapotY -= (y - oldY)/150.0;
    }
    else{
        angle[angleID]+=y-oldY;
    }
    oldX = x;
    oldY = y;
    glutPostRedisplay();    

}



printf("glTranslatef(%.3f, %.3f, 0);\n",teapotX,teapotY);



YT's 電腦圖學 Week17

 總複習 !

程式碼要捨得刪

李先生

魚鱗☆゚.*・。電腦圖學 Week17

1. week16-0_sample

(1)安裝freeglut

今天我要抽堤豐

week17

探索比奇寶的十大奧秘 17

week17 電腦圖學

電腦圖學 Week17 🥴

2024年6月12日 星期三

week01

        1.今天加入blog

        2.設定目標

        3.標籤寫學號姓名週數

        4.可以放圖片

        5.老師教我們許多截圖法

        6.實際在WebGL Water操作3D的球 (https://madebyevan.com/webgl-water/)



7.開啟CodeBlocks>file > new>project

 

>點選OpenGL > go>將檔案存到桌面>檔名為Week01_OpenGL

 

>點選第三個齒輪+箭頭






        2024graphicsa

        graphics 是圖學的意思


        week01_GLUT_10_lines


        week01_GLUT


        C:\Users\Administrator\Desktop\freeglut

        libglut32.a  124KB







week02

1.下載課本範例,範例網站

2.windows.zip ,解壓縮到下載\windows\

3.data.zip,解壓縮到下載\windows\data\

4.點擊 shapes.exe ,嘗試切換程式的參數




來試試看GL TRIANGLES三角形
1. 左遵設成「多一點顏色」toogle colors at vertices
2. 左邊切換成TRIANGLES
3. 每個頂點,都可以有自己的色彩

## 今天的第一個程式:week02_glut_color_teapot
1. 上週的「10行」程式,直接用




## 今天的第二個程式用小畫家幫忙找出頂點座標
1.打開小畫家,把一張圖片放進來。建議400x400,中心點在(200,200)
2.口訣:減一半,除一半,Y軸加負號(小畫家Y軸朝下)
3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)


3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)
3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)

3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)



3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)




week03

 week03_mouse

安裝freeglut

1.hello mouse(最初版)


2.完成版


3.用滑鼠協助畫畫(確定位置點)


4.做第二周第一份作業

會用到/*

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//46行

glPushMatrix();//49

glPopMatrix();

*/

4.1解決移動問題


glTranslatef(teapotX, teapotY,0);

4.2解決轉動問題

右手比讚,(拇指,手指,前後)

可以用3.去理解


5.w可以移動e可以轉動







2024年6月11日 星期二

Week16

 #week16-0_sample

準備上課環境

0. freeglut

1. OpenCV

2. 設定 CodeBlocks

    - include 目錄:C:\OpenCV2.1\include

    - lib 目錄:C:\OpenCV2.1\lib

    - link 3個設定:cv210  cxcore210  highgui210

3. File-New-Project week16-0_sample


課本範例

1. https://jsyeh.org/3dcg10/ -下載 data win32

2. 解壓縮 window.zip data.zip

3. 把 data 資料夾整個丟到 window 資料夾


week16-1_sample_gluLookAt

1. File-New-Project week16-1_sample_gluLookAt

2.要改 resize () 函式 ,在最下面增加 gluLookAt(0,0,0, -2.4,1.2,-6, 0,1,0)

3. 現在要做另一個修改,想要按按鍵時看不同地方

    - 按 1 看左上方
    - 按 2 看上方
    - 按 3 看右上方

```cpp

    static void key(unsigned char key, int x, int y)

    {

        if(key=='1'){ ///看左上方

            glMatrixMode(GL_MODELVIEW);

            glLoadIdentity();

            gluLookAt(0, 0, 0, -2.4, 1.2, -6, 0, 1, 0);

        }else if(key=='2'){ ///看上方

            glMatrixMode(GL_MODELVIEW);

            glLoadIdentity();

            gluLookAt(0, 0, 0, 0, 1.2, -6, 0, 1, 0);

        }else if(key=='3'){ ///看右上方

            glMatrixMode(GL_MODELVIEW);

            glLoadIdentity();

            gluLookAt(0, 0, 0, +2.4, 1.2, -6, 0, 1, 0);

        }

    .....

}

```

#week16-2_glutReshapeFunc_glutPerspective_glutLookAt

將寫一個程式,11行 + 8行,做出透視投影

1.  File-New-Project week16-2_glutReshapeFunc_glutPerspective_glutLookAt

2. 貼上11行簡單程式碼

3. 在 int main () 裡加入 glutReshapeFunc ( reshape )

4. 寫自己的 void reshape ( int w,int h ) {......}

week16-3_myTexture_id1_id2_glBindTexture

若想要有兩張貼圖 ( 一張背景、一張給模型 )

1.  File-New-Project week16-3_myTexture_id1_id2_glBindTexture

2. 偷用 week05 的程式碼,因為沒有圖檔,所以會出錯!

3. 找一張背景圖

電腦圖學week16

 week16-0_Sample

先設定好環境

下載freeglut
檔名libglut32
OpenCV下載
codeblock打開
setting-compiler打開
search directories 的 compiler
C:\OpenCV2.1\include
search directories 的 linker
C:\OpenCV2.1\lib
Linker setting 加 cv210 cxcore210 highgui210

下載範例


下載win32跟data



Git 指令

cd desktop

git clone https://github.com/mickey1132/2024-graphicsA

cd 2024-graphicsA

git status

git add .

git status

git config --global user.email mickylin1132@gmail.com

git config --global user.name mickey1132

git commit -m WeekXX

git push

Week15

 #week15-1_PlaySound

0. 安裝 freeglut

1. File-New-Project

'''cpp

#include<windows.h>

'''


'''cpp

int main(...)

{///把 mybeat.wav 放在 C:\裡,就可以用 C:/mykbeat.wav PlaySound ("檔名.wav",NULL,SND_ASYNC) ;

    PlaySound ("檔名.wav",NULL,SND_ASYNC) ;

}

'''

# week15-2_PlaySound_empty

1. File-New-Project,GLUT專案 week15-2_PlaySound_empty

2. 把程式碼全刪

'''cpp

#include <windows.h>

int main()

{

    PlaySound("C:/Do.wav",NULL,SND_SYNC);

}

'''


現在要把工作執行目錄 Project-Properties 的第2分頁 Execution working dir 改成小數點

再把 桌面/freeglut/bin/freeglut.dll 和音樂 都複製到檔案目錄


# week15-3_CMP3_MCI

1. File-New-Project, GLUT專案 week15-3_CMP3_MCI

2. 請把 CMP3 MCI.h 和 song.mp3 和 freeglut.dll 都放到專案目錄裡

3. 把工作執行目錄設成小數點

```cpp

    #include "CMP3_MCI.h" ///雙引號,很像之前 glm.h

    CMP3_MCI myMP3; ///宣告一個物件變數

```

在main()裡

```cpp

int main(...)

{

     myMP3.Load("song.mp3");

     myMP3.Play();

}

```


# week15-4_mouse_motion_translate_rotate

1. File-New-Project, GLUT專案 week15-4_mouse_motion_translate_rotate

2. 貼上 11行的 GLUT 程式碼

3. 目標先能 移動、旋轉、陣列


Week05

#OpenCV安裝

1. 下載 OpenCV-2.1.0-win32-vs2008.exe

    小心1:Add OpenCV to . . . PATH

    小心2:要安裝在 C:\OpenCV2.1 目錄裡

2. 安裝完後,要重開 CodeBlocks

3.設定 Setting-Compiler 要加入3個設定

    search 目錄 Compiler 的 include 目錄裡 - C:\OpenCV2.1\include

    search 目錄 Linker 的 lib 目錄 - C:\OpenCV\lib

    加入 Linker 的 3個檔名 - cv210 cxcore210 highgui210


## week05-1_opencv.cpp

0. 找一張圖片,放在 C:\image.jpg 

1. File-New-Empty File 空白檔案 week05-1_opencv.cpp

    #include <opencv/highgui.h>

    int main()

    {///Intel performence library

        IplImage * img = cvLoadImage("c:/image.jpg");

        cvShowImage("week05", img);

        cvWaitKey(0);

    }


(家裡的電腦不知道為什麼沒辦法存到C槽)


Week10

 #week10

先設定環境

0.安裝freeglut,把lib\libfreeglut.a複製成libglut32.a

1.File-New-Project,GLUT專案week10-1_glutWireCube_myBody_myArm

2.貼上week09-3_glutWireTeapot_glutWireCube_glutWireSphere的程式碼

3.要把void display()改寫,呼叫myBody(),myArm()

##week10-1_glutWireCube_myBody_myArm

void myBody() { ///我的身體

     glPushMatrix();

        glColor3f(1,0,0);///紅色的

        glutWireCube(0.6);///myBody();

        glPopMatrix();

}

void myArm() { ///我的手臂

    glPushMatrix();

        glColor3f(0,1,0);///綠色的

        glScalef(1,0.4,0.4);///myArm();

         glutWireCube(0.3);

         glPopMatrix();


}


week10-2_rotate_myArm


1.File-New-Project,GLUT專案week10-2_rotate_myArm

2.貼上10-1的程式

3.加上float angle=0;///旋轉的角度

4.在main() 加上glutIdleFunc(display);///有空就旋轉

5.在display()裡,myArm()的前後,加上glPushMatrix()

和glRotatef(angle++,0,0,1);










##week10-3_rotate_translate_myArm
1.File-New-Project,GLUT專案week10-3_rotate_translate_myArm
2.貼上10-2的程式
3.加上glTranslatef(0.15,0,0);











##week10-4_translate_rotate_translate_myArm
1.File-New-Project,GLUT專案week10-4_translate_rotate_translate_myArm
2.貼上10-3的程式
3.加上最後一行glTranslate(0.3,0.3,0);





Week02

#點線面色彩

1.下載課本範例

https://jsyeh.org/3dcg10/

2.下載 win32 data

解壓縮(data直接拖到window資料夾裡)

3.點Shapes.exe



#week02_glut_color_teapot

0.安裝freeglut並把lib\libfreeglut.a複製成libglut32.a

1.File-New-Project,GLUT專案week02_glut_color_teapot

2.上周的10行程式拿來用

3.再加1行

4.做兩個茶壺

#week02_color_triangle

把week02_glut_color_teapot貼上修改

#week02_glut_glvertex2f_mspaint

用小畫家,找到頂點座標

1. File-New-Project,,Glut專案 week02_glut_glvertex2f_mspaint

2. 開小畫家,放一張圖進來,建議400*400

    a. mouse所在的點畫面左下角會有座標

3. 口訣: 減一半、除一半、Y加負號

#week02_glut_cos_sin_circle

畫圓

1. cos=x sin=y

2. cos sin 前面乘一個數決定圓形的大小

2. cos sin 後面加一個數決定圓形的位子

Week09

 ##week09-0_sample

0.安裝freeglut,再把lib\libfreeglut.a複製成libglut32.a



1.File-New-Project,GLUT專案 week09-0_sample


##複習上週的week08-3_glm_gundam_opencv_texture_lighting

要把環境設好:OpenCV

1.桌面有葉正聖老師上課軟體 OpenCV-2.1.0

2.小心:Add PATH

3.小心:目錄不要改

4.要重開CodeBlocks


CodeBlocks:Setting-Compiler 裡,要設3個地方

1.C:\OpenCV2.1\include




2.C:\OpenCV2.1\lib



3.cv210 cxcore210 highgui210

要把上週的GitHub倉庫複製下來

0.安裝Git,開啟Git Bash小黑

1.cd desktop

2.git clone http://github.com/帳號/2024graphicsa

3.cd 2024graphicsa

4.start .





把上週的week08-3_glm_gundam_opencv_texture_lighting開起來

1.File-Open,到那個目錄,點開.cbp (CodeBlocks Project檔)

2.Build&Run就可以

##把剛剛的專案,變成weel09-1_glm_gundam_opencv_texture_lighting

0.把剛剛的專案先關起來 Close Project (這樣才不會被鎖)

1.目錄:把整個week08-3_glm_gundam_opencv_texture_lighting複製到桌面的

weel09-1_glm_gundam_opencv_texture_lighting

2.檔案:把新目錄裡的專案檔week08-3_glm_gundam_opencv_texture_lighting.cbp改檔名變成

weel09-1_glm_gundam_opencv_texture_lighting

3.CodeBlocks File-Open開啟weel09-1_glm_gundam_opencv_texture_lighting.cbp

4.再把專案的Title改成weel09-1_glm_gundam_opencv_texture_lighting

就是用Notepad++ 開啟weel09-1_glm_gundam_opencv_texture_lighting.cbp檔,把裡面的week08-3都改成week09-1就酐了,記得存檔

5.再用CodeBlocks File-Open開它



##week9-2_glutSolidTeatop_glutWireCube_glutSolidSphere

1.File-New-Project,GLUT專案

week9-2_glutSolidTeatop_glutWireCube_glutSolidSphere

2.貼上GLUT程式11行


3.換畫另外三個,左上、上、右上,使用期中考教的程式碼



##week09-3_glutWireTeatop_glutWireCube_glutWireSphere

1.File-New-Project,GLUT專案

week09-3_glutWireTeatop_glutWireCube_glutWireSphere

2.貼上week09-2的程式

3.把3段,再複製到下面,並把下面y座標改成負的