float a=1;
float angle[10]={0,0,0,0,0,0,0,0,0,0};
float angleOld[10]={0,0,0,0,0,0,0,0,0,0};
float angleNew[10]={0,0,0,0,0,0,0,0,0,0};
int angleID=0;
void timer(int t);
FILE * fout =NULL, *fin=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=='s') //存檔
{
for(int i=0;i<10;i++)
printf("%f ",angle[i]);
printf("\n");
if(fout==NULL) fout=fopen("my_output.txt","w+");
for(int i=0;i<10;i++)
fprintf(fout,"%f ",angle[i]);
fprintf(fout,"\n");
}
if(key=='r') //讀
{
if(fin==NULL) fin=fopen("my_output.txt","r");
a+=0.1;
for(int i=0;i<10;i++)
angle[i]=angleOld[i]*(1-a)+angleNew[i]*a;
if(a>=1)
{
a=0;
for(int i=0;i<10;i++)
{
angleOld[i]=angleNew[i];
fscanf(fin,"%f",&angleNew[i]);
}
glutPostRedisplay();
}
}
if(key=='p') //播放
{
glutTimerFunc(0,timer,0);
}
glutPostRedisplay();
}
void timer(int t)
{
glutTimerFunc(100,timer,0);
if(fin==NULL) fin=fopen("my_output.txt","r");
a+=0.1;
for(int i=0;i<10;i++)
angle[i]=angleOld[i]*(1-a)+angleNew[i]*a;
if(a>=1)
{
a=0;
for(int i=0;i<10;i++)
{
angleOld[i]=angleNew[i];
fscanf(fin,"%f",&angleNew[i]);
}
}
glutPostRedisplay();
}
做卡通人物的動畫

沒有留言:
張貼留言