2014年4月25日 星期五

轉轉轉


void keyboard(unsigned char key,int x,int y)
{
if(key=='a')angleX+=5;
if(key=='b')angleX-=5;
glutPostRedisplay();
}
//鍵盤事件
float angleX=0;
void keyboard(unsigned char key,int x,int y)
{
printf("%c %d %d\n",key,x,y);
if(key=='a')angleX+=5;
if(key=='b')angleX-=5;
glutPostRedisplay();
}
//鍵盤事件與滑鼠的座標
void myLight()
{
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };
glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
}
//打光
void mouse(int button,int state,int x,int y)
{
printf("%d %d %d %d\n",button,state,x,y);
startX=x;
}
void motion(int x,int y)
{
printf("%d %d\n",x,y);
angleX=x-startX;
glutPostRedisplay();
}
//滑鼠事件
float angleY=0,startY=0;
在 mouse 的函式裡面加入startY=y;
在 motion的還是裡面加入 angleY-y-startY;
//讓Y軸旋轉
float dist=sqrt(angleX*angleX + angleY*angleY);
glRotatef(dist,-angleY,-angleX,0);
glMultMatrixf(m);
glGetFloatv(GL_MODELVIEW_MATRIX,m);
//任意軸旋轉

沒有留言:

張貼留言