2017年6月12日 星期一

Week14 三個ㄌ 的 上課筆記

1.timer計時器

void timer(int t)

{
    glutTimerFunc(100,timer,t+1);
    angle++;
    glutPostRedisplay();
}

int main(int argc, char**argv)
{

    glutDisplayFunc(display);
    //glutIdleFunc(display);
    glutTimerFunc(2000,timer,0); 

}


2.使用滑鼠控制
void mouse(int button,int state,int x,int y)
{
    oldX=x,oldY=y;
    glutPostRedisplay();
}


void motion(int x,int y)
{
    angle[now]+=(x-oldX);
    oldX=x;
    glutPostRedisplay();
}
3.利用鍵盤滑鼠一起控制
void keyboard(unsigned char key,int x,int y)
{
    if(key=='0')now=0;
    if(key=='1')now=1;
    if(key=='2')now=2;
    if(key=='3')now=3;
    if(key=='s'){
        printf("%c\n",key);
        if(fout==NULL)
        {
            fout=fopen("file.txt","w+");
        }
        fprintf(fout,"%.2f %.2f %.2f %.2f\n",angle[0],angle[1],angle[2],angle[3]);
        printf("%.2f %.2f %.2f %.2f\n",angle[0],angle[1],angle[2],angle[3]);
    }
    if(key=='r')
    {
        //printf("%c\n",key);
        if(fin==NULL)
        {
            fin=fopen("file.txt","r");
            fscanf(fin,"%f %f %f %f\n",&newAngle[0],&newAngle[1],&newAngle[2],&newAngle[3]);
        }
        if(alpha>=1.0)

        {
            for(int i=0;i<5;i++) oldAngle[i]=newAngle[i];
            fscanf(fin,"%f %f %f %f\n",&newAngle[0],&newAngle[1],&newAngle[2],&newAngle[3]);
            alpha=0.0;
        }
        for(int i=0;i<5;i++)
        {
            angle[i]=alpha*newAngle[i]+(1-alpha)*oldAngle[i];
        }
        alpha+=0.1;
        /*if(key=='z')
        {
            PlaySound("C:\\Users\\Administrator.20150226-220640\\Desktop\\04160100_hw01\\data\\home.mp3",NULL,SND_ASYNC);
        }*/

        glutPostRedisplay();
    }
}
void mouse(int button,int state,int x,int y)
{
    oldX=x,oldY=y;
    glutPostRedisplay();
}


void motion(int x,int y)
{
    angle[now]+=(x-oldX);
    oldX=x;
    glutPostRedisplay();
}

沒有留言:

張貼留言