2024年5月23日 星期四

C~電腦圖學日誌 Week14

Week14


week14-1_alpha_interpolation_angle_timer


1. 安裝freeglut,複製libfreeglut.a改成libglut32.a

2. 下載OpenCV選第2或3選項別選第1個

3. 安裝在預設的目錄,重開CodeBlocks(讓編譯器讀到檔案)

3.0 去設定 Settings->Compiler 要加3個設定

3.1 search目錄 Compiler的 include目錄  加C:\OpenCV2.1\include

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

3.3 加入Linker設定的 3個檔名cv210 cxcore210 highgui210

4. 將week13-1_glm_gundam_keyboard_angleID_mouse_motion_angle
    改成
week14-1_alpha_interpolation_angle_timer

5. 開啟Eccel來看看    alpha內插
    alpha是係數
    alpha公式:新的 * alpha + 舊的 * (1 - alpha)

6. 改成使用S鍵來存檔

 
7. 測試時間計時函數

8. 開始做動畫
float oldAngle[20]={}, newAngle[20]={};
void timer(int t){
    glutTimerFunc(50, timer, t+1);
    if(t%20==0){
        if(fin==NULL) fin = fopen("angle.txt", "r");
        for(int i=0;i<20;i++){///針對20個關節
            oldAngle[i] = newAngle[i];
            fscanf(fin,"%f", &newAngle[i] );
            ///讀記事本的數值存入各個關節的新angle中
        }
    }
    float alpha = (t%20) / 20.0;
    for(int i=0;i<20;i++){
        angle[i] = newAngle[i]*alpha + oldAngle[i]*(1-alpha);
        ///存各值的轉動係數
    }
    glutPostRedisplay();
}
void keyboard(unsigned char key, int x, int y){
    if(key=='p'){///播放動畫
        glutTimerFunc(0, timer, 0);
    }


week14-2_angleX_angleY_10

1. 將week14-1複製並改名成week14-2_angleX_angleY_10

2. 把float angle[20]={}改成
    float angleX[10]={}, angleY[10]={};
    
    for(int i=0;i<20;i++)改成
    for(int i=0;i<10;i++)

3. 更改motion()的程式( - = 更順)
    void motion(int x, int y){
    angleX[angleID] += y-oldY;///angleX 對Y
    angleY[angleID] += x-oldX;///angleY 對X



4. 更改timer()的程式

5. 更改keyboard()
的程式


6. 更改display()的程式


Github





沒有留言:

張貼留言