如何在 OpenGL 中的特定范围内旋转对象?
How to rotate an object in certain range in OpenGL?
我做了一个锤子,我想在按下特定键盘时快速旋转锤子以进行打击。
我用了一个定时器函数来实现这个。现在当我按下特定的键盘时,我的锤子可以旋转 360 度,我的目标是在 90 到 -90 度之间旋转锤子。
我的代码:
bool stopRotation = false;
void weaponController(int val)
{
if (stopRotation != false) {
zr++; //the default angle is 0
glutPostRedisplay();
glutTimerFunc(1, weaponController, 1);
}
}
void specialkey(unsigned char key, int x, int y)
{
case 't':
stopRotation = true;
glutTimerFunc(10,weaponController,0);
break;
case 'T':
stopRotation = false;
break;
}
我该怎么做?感谢您的帮助!
如果zr
是你锤子的旋转那么我是这样看的:
int zr=0,dzr=+1; // might be a float I do not know as you did not share
bool stopRotation = false;
void weaponController(int val)
{
if (stopRotation != false) {
zr+=dzr; //the default angle is 0
if (zr>+90){ dzr=-1; zr=+90+dzr; }
if (zr<-90){ dzr=+1; zr=-90+dzr; }
glutPostRedisplay();
glutTimerFunc(1, weaponController, 1);
} else { zr=0; dzr=+1; }
}
所以简单地说,dzr
是每次跨越 +/-90 度障碍时反转的旋转方向。当不使用锤子时,其位置和方向将重置为启动条件....
我做了一个锤子,我想在按下特定键盘时快速旋转锤子以进行打击。
我用了一个定时器函数来实现这个。现在当我按下特定的键盘时,我的锤子可以旋转 360 度,我的目标是在 90 到 -90 度之间旋转锤子。
我的代码:
bool stopRotation = false;
void weaponController(int val)
{
if (stopRotation != false) {
zr++; //the default angle is 0
glutPostRedisplay();
glutTimerFunc(1, weaponController, 1);
}
}
void specialkey(unsigned char key, int x, int y)
{
case 't':
stopRotation = true;
glutTimerFunc(10,weaponController,0);
break;
case 'T':
stopRotation = false;
break;
}
我该怎么做?感谢您的帮助!
如果zr
是你锤子的旋转那么我是这样看的:
int zr=0,dzr=+1; // might be a float I do not know as you did not share
bool stopRotation = false;
void weaponController(int val)
{
if (stopRotation != false) {
zr+=dzr; //the default angle is 0
if (zr>+90){ dzr=-1; zr=+90+dzr; }
if (zr<-90){ dzr=+1; zr=-90+dzr; }
glutPostRedisplay();
glutTimerFunc(1, weaponController, 1);
} else { zr=0; dzr=+1; }
}
所以简单地说,dzr
是每次跨越 +/-90 度障碍时反转的旋转方向。当不使用锤子时,其位置和方向将重置为启动条件....