SpecialFunction
void special(int key, int x, int y)
{
if(key==GLUT_KEY_UP) nowID--;
if(key==GLUT_KEY_DOWN) nowID++;
if(nowID<0) nowID=0;
if(nowID>29) nowID=29;
}
可以用這個函式來用方向件上下來切換控制的物件(nowID)
限制關節旋轉的角度
float angleX0[30]={0,-24};
float angleX1[30]={0,24};
float angleY0[30]={0,-9};
float angleY1[30]={0,18};
float angleX1[30]={0,24};
float angleY0[30]={0,-9};
float angleY1[30]={0,18};
void motion(int x, int y)
{
if(mode==1){///translate
posX[nowID]+=(x-oldX)/300.0;
posY[nowID]-=(y-oldY)/300.0;
printf("glTranslatef(%.2f, %.2f, %.2f);\n", posX[nowID], posY[nowID], 0);
}else if(mode==2){
angleX[nowID]+= x-oldX;
angleY[nowID]+= y-oldY;
printf("angleX:%.0f, angleY:%.0f\n", angleX[nowID], angleY[nowID]);
if(angleX[nowID]<angleX0[nowID]) angleX[nowID]=angleX0[nowID]; if(angleX[nowID]>angleX1[nowID]) angleX[nowID]=angleX1[nowID]; if(angleY[nowID]<angleY0[nowID]) angleY[nowID]=angleY0[nowID]; if(angleY[nowID]>angleY1[nowID]) angleY[nowID]=angleY1[nowID]; }
oldX=x; oldY=y;
glutPostRedisplay();
}
沒有留言:
張貼留言