2017年6月5日 星期一

Week16 Una Der 圖學筆記

今日目標
(1)內差公式
(2)存檔/讀檔
(3)利用Timer自動內插
(4)鍵盤加滑鼠

1.
用Excel
公式是: alpha* new+(1-alpha)*old





2.讀黨和存檔
首先是讀檔的部分

#include <stdio.h>//一定要有寫這行
FILE * fout=NULL;//開一個空空的檔案
 if(key=='s' || key=='S')//如果按下S就會執行到存檔的動作
{
        if(fout==NULL){// 如果是空的,第一次寫檔
            fout=fopen("file.txt", "w+");
        }
        fprintf(fout, "%.3f %.3f %.3f %.3f %.3f\n", angle[0],angle[1],angle[2],angle[3],angle[4]);
        printf("%.3f %.3f %.3f %.3f %.3f\n",angle[0],angle[1],angle[2],angle[3],angle[4]);
}


在跑的時候

跟後來出現的file會紀錄擬調整的角度在裡面
///////

這邊是寫檔的部分

if(key=='r' || key=='R'){
        if(fin==NULL){///read讀檔案的第2行
            fin=fopen("file.txt", "r");///read讀檔案的第3行
        }
        fscanf(fin, "%f %f %f %f %f", &angle[0], &angle[1], &angle[2], &angle[3], &angle[4]);///read讀檔案的第4行
        glutPostRedisplay();///read讀檔案後, 要重畫畫面
    }

只要有按下R就會出現擬之前跑好的角度

4.鍵盤加滑鼠
void keyboard(unsigned char key, int x, int y)///今天簡化修改
{
    printf("%c\n", key);
    if(key=='0') now=0;
    if(key=='1') now=1;
    if(key=='2') now=2;
    if(key=='3') now=3;
    if(key=='4') now=4;
    if(key=='5') now=5;}
這是鍵盤的部分
按下的數字代表你的關節位置

void mouse(int button, int state, int x, int y)
{
    oldX=x;///今天簡化修改
    oldY=y;///今天簡化修改
}
void motion(int x, int y)
{
    angle[now] += x-oldX;
    oldX=x;
    glutPostRedisplay();
}

這邊是控制滑鼠位移關節角度
然後都要記得在下面加上func();
才會執行喔!



沒有留言:

張貼留言