2024年5月13日 星期一

Week13

Week13

完成課堂前置

1.OpenCV下載
2.Setting-Complier 設定
3.CodeBlock開啟

13-1 mouse keyboard gundam (用鍵盤調整角度)

1.將上週12-3的CBP檔開啟改名

2.新增一個變數 angleID
程式如下:
int angleID = 0;
float angle[20]={ };
void display(){}

3.將下方陣列的倆的 Rotatef 的 angle++ 改成angle[0]angle[1]

4.新增 Keyboard 函式
程式如下:
void keyboard(unsigned char key,int x,int y){
    if(key=='0') angleID = 0;
    if(key=='1') angleID = 1;
    if(key=='2') angleID = 2;
    if(key=='3') angleID = 3;
}

5.新增oldX,Y 的變數
程式如下:
int oldX = 0,oldY = 0;

6.新增mouse變數
程式如下:
void mouse(int button,int state,int x,int y){
    oldX = x;
    oldY = y;
}

7.新增 motion函式
程式如下:
void motion(int x,int y){
    angle[ angleID ] += y - oldY;
    oldX = x;
    oldY = y;
glutPostRedisplay();
}

8.最後設定
設定如下:
glutKeyboardFunc(keyboard);
glutMotionFunc(motion);

結果如圖(按滑鼠旋轉







13-2新增輸出資料並儲存的功能

1.複製上一個檔案餅改檔名
2.新增輸出角度資料的STDIO程式
如下:
#include <stdio.h>
FILE * fout = NULL;
FILE * fin = NULL;
void keyboard(unsigned char key,int x,int y){
    if(key=='s'){
       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");
}






2-2如果要儲存資料新增   的程式

 

 

沒有留言:

張貼留言