2024年5月16日 星期四

YT's 電腦圖學 Week13

 #week13-1_glm_gundam_keyboard_angleID_mouse_motion_angle

先準備上課的環境 

  • freeglut 安裝
  • OpenCV 2.1 安裝
  • 重開CodeBlock 設定 Compiler-Setting

    • Search directories 的 compiler 要加入 C:\OpenCV2.1\include
    • Linker 的 lib 要加入 C:\OpenCV2.1\lib
    • Linker 設定,要加入 cv210 、 cxcore210 、 highgui210

再把上周的 week12-3 程式碼拿來用

!! 把 week12-3 檔案拉到桌面再改檔名 !!

  • 把 week12-3 的檔名改為 week13-1
  • 把.cbp 檔改名為 week13-1
  • 用 Notepad++ 開.cbp 檔,改 Title 為 week13-1

1. 改程式碼 : 把float angle=0; 改成 

float angle[20]={};///20個角度,都設成0
int angleID = 0; ///可以是角度0、角度1、角度2...



設定完之後,按鍵盤0和1 可以有不同的旋轉角度

按0:


按1:


轉動變滑順:
轉動後停下來要再轉動時,不會跑回原點




#week13-2_FILE_fopen_fprintf_fscanf 

1. 把 week13-1 複製整個目錄,改目錄名,改 .cbp 名,Notepad++改裡面的 Title

2. 要加 FILE 指標

#include<stdio.h>
FILE * fin = NULL;
FILE * fout = NULL;

3. 在 motion() 裡,要加一段程式

void motion(int x, int y) {
    angle[angleID] += y-oldY;
    oldX = x;
    oldY = y;
    glutPostRedisplay();
    if(fout==NULL) fout = fopen("angle.txt","w+");
    for(int i=0; i<20; i++){
        printf("%.1f ", angle[i] );
        fprintf(fout,"%.1f", angle[i] );
    }
printf("\n");
fprintf(fout, "\n");
}


!! 要注意  "%.1f " f 後面要空格 !!


* 執行程式時,用 mouse motion 一邊改變角度, 一邊大量產生角度值
小黑關掉後,可在目錄裡, 看到 angle.txt 裡面就是剛剛產生的角度值



4. R鍵記動作


長按 R 鍵 後,動作會被記下

5. 加上身體



加上身體後,按0和1 手臂一樣能轉動



6. 加上多個關節







































沒有留言:

張貼留言