2014年5月15日 星期四

倒數3周


加入 使用滑鼠使用!!!!
float angle[10]={0,0,0,0,0,0,0,0,0,0};
int angleID=1;
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;
if(key=='5')angleID=5;
if(key=='6')angleID=6;
if(key=='7')angleID=7;
if(key=='8')angleID=8;
glutPostRedisplay();
int oldX=0 ,oldY=0;
void mouse(int button ,int state ,int x,int y)
{
oldX=0 ,oldY=0;
}
void motion(int x, int y)
{
angle[angleID]+=(x-oldX); oldX=x;
glutPostRedisplay();
}

 glPushMatrix();
   glTranslatef(0,-0.2,0);//小右腿
   glRotatef(angle[6], 0,0,1);
   glTranslatef(0, -0.2, 0);
   myLeg();
  glPopMatrix();

記得還是要把小腿使用  glPushMatrix();    glPopMatrix();包起來



存檔!!讀黨!!!

 TODO: 請用鍵盤來切換 angleID變數, 將今天的範例, 改用 陣列、變數、滑鼠, 來讓不同的關節轉動 (小心: 請記得把範例中所有的變數都變成陣列哦!)(小心: 請記得註冊 glutMouseFunc(mouse); 及 glutMotionFunc(motion); 哦!) (小心: 要用到的變數,在用到之 "前" 要宣告哦!)


float angle[10]={0,0,0,0,0,0,0,0,0,0};
int angleID=1;
FILE *fout=NULL, *fin=NULL;//要存檔的技巧1: 用 FILE * fout =NULL; 宣告 
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;
if(key=='5') angleID=5;
if(key=='6') angleID=6;
if(key=='7') angleID=7;
if(key=='8') angleID=8;

if(key=='x') printf("%f %f %f %f %f %f %f %f %f %f \n", angle[0], angle[1], angle[2], angle[3], angle[4], angle[5], angle[6],angle[7], angle[8], angle[9] );

if(key=='s'){//要存檔的技巧
for(int i=0;i<10;i++) printf("%f ", angle[i]);
printf("\n");

///要存檔的技巧4: 用 if(fout==NULL)做保護, 讓檔案不要一直重開出錯, "開第一次就好了" 
if(fout == NULL) fout = fopen("my_first_file_to_open_yayaya.txt", "w+");///要存檔的技巧2: 開檔案, 要寫檔 
for(int i=0;i<10;i++) fprintf(fout,  "%f ", angle[i]);///要存檔的技巧3: printf() 改裝成 fprintf() 
fprintf(fout, "\n");///要存檔的技巧3: 改裝的技巧是, (函式名)前面加個 f, (參數)前面加個 fout 
}

if(key=='r'){//要存檔的技巧
///要存檔的技巧4: 用 if(fout==NULL)做保護, 讓檔案不要一直重開出錯, "開第一次就好了" 
if(fin == NULL) fin = fopen("my_first_file_to_open_yayaya.txt", "r");///要存檔的技巧2: 開檔案, 要寫檔 
for(int i=0;i<10;i++) fscanf(fin,  "%f ", &angle[i]);///要存檔的技巧3: printf() 改裝成 fprintf() 
}


glutPostRedisplay();


沒有留言:

張貼留言