寫檔
1. 新增指標 fout FILE * fout=NULL;2. 指定指標 fopen("檔名", 方式) 方式是 "w+"
3. 印到檔案 fprintf(指標, "要寫的東西")
1. File * fout=NULL
2. fout = fopen("filename.txt", "w+");
3. fprintf(fout, "hello world");
讀檔
1. 新增指標 fin FILE * fin =NULL;
2. 指定指標 fopen("檔名", 方式) 方式是 "r"
3. 讀檔案 fscanf(指標, "%s", line);
1. File * fin=NULL
2. fin = fopen("filename.txt", "r");
3. fscanf(fin, "hello world");
控制獨立關節轉動
1. main() 宣告
glutKeyboardFunc(keyboard);
2. 程式撰寫
> 使用一個 變數 angleID,
使 motion() 裡,陣列 angle[angleID]
可以控制 display() 裡的 angle[]
void motion(int x, int y)
{
angle[angleID] += (x-oldX);
oldX = x;
display();
}
void keyboard(unsigned char key, int x, int y)
{
if(key=='1') angleID=1;
if(key=='2') angleID=2;
if(key=='3') angleID=3;
if(key=='4') angleID=4;
}
紀錄/播放動作
紀錄
講解
> 使用寫檔 (參見前一章)
> 按下w開始 記錄(write)
> fprintf( 指標, "要印的東西" )
keyboard() 裡,加入以下程式
if (key=='w') {
if (fout==NULL) fout=fopen("motion.txt", "w+");
for (int i=0; i<5; i++) {
printf( "%.1f ", angle[i] );
fprintf( fout, "%.1f ", angle[i]);
}
printf("\n");
fprintf(fout, "\n");
}
if (fout==NULL) 檢查是否有開檔
for () 一次寫5個關節
在motion()裡面也加
if(fin==NULL) fin = fopen("motion.txt", "r");
for(int i=0; i<20;i++){
fscanf(fin, "%f", &angle[i]);
}
printf("\n");
fprintf(fout, "\n");
在freeglut\bin資料夾底下找 motion.txt 就可以找到剛剛紀錄的座標
講解
> 使用讀檔 (參見前一章)
> 按下r開始 記錄(write)
> fscanf( 指標, "要讀的東西" )
if(key=='r'){
if(fin==NULL) fin = fopen("motion.txt", "r");
for(int i=0; i<20;i++){
fscanf(fin, "%f", &angle[i]);
}
}
glutPostRedisplay();
*glutPostRedisplay(); 加上這 就會重新畫,否則只有按下鍵盤才畫
終於大功告成拉拉拉拉拉拉拉拉拉哈哈哈哈哈哈哈哈哈哈哈哈哈!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
小葉閒聊time
規劃的重要性unitize 轉成單位
分開存,才能分開畫
沒有留言:
張貼留言