(1)移動、旋轉、縮放
(2)T-R-T及關節結構
(3)存檔、讀檔、播放
存檔
if(key=='s'){
if(fout==NULL) fout=fopen("a.txt", "w+");
for(int i=0;i<10;i++)
{
printf("%.1f ", angle[i]);
fprintf(fout, "%.1f ", angle[i]);
}
printf("\n"); fprintf(fout, "\n");
}
glutPostRedisplay();
-----------------------------------------------------------------------------------------------------------------------
讀檔
void readNew()
{
if(fin==NULL) fin=fopen("a.txt", "r");
for(int i=0;i<10;i++){
angleOld[i]=angleNew[i];
fscanf(fin, "%f", &angleNew[i]);
printf("%f ", angleNew[i]);
}
printf("\n");
}
-----------------------------------------------------------------------------------------------------------------------
播放
void timer(int t)
{
glutTimerFunc(20, timer, t+1);
float a=(t%50==0)/50.0;
if(t%50==0) readNew();
for(int i=0;i<10;i++)
{
angle[i]=(1-a)*angleOld[i]+(a)*angleNew[i];
}
glutPostRedisplay();
}
(4)內插動作Interpolate
內插公式
glutTimerFunc(20, timer, t+1);
float a=(t%50==0)/50.0;
if(t%50==0) readNew();
for(int i=0;i<10;i++)
{
angle[i]=(1-a)*angleOld[i]+(a)*angleNew[i];
}
沒有留言:
張貼留言