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
改成week14-1_alpha_interpolation_angle_timer
5. 開啟Eccel來看看 alpha內插
alpha是係數
alpha公式:新的 * alpha + 舊的 * (1 - alpha)
7. 測試時間計時函數
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);
}
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()的程式
6. 更改display()的程式
Github
沒有留言:
張貼留言