假设我有这个 glutIdleFunc 在 OpenGL 场景的背景中运行,其中包含一个小生物,它有多个“脉动”的径向排列的腿:
void PulsateLegs(void)
{
lowerLegsRot = (lowerLegsRot + 1)%360;
glutPostRedisplay();
}
...在显示功能中使用 lowerLegsRot 值的地方如下:
glRotatef((GLfloat)lowerLegsRot, 1.0, 0.0, 0.0);
不看小家伙到底长什么样子,很难想象,但很明显,这个功能让双腿反复旋转。我想将这种旋转限制在一定范围内(例如,-15 到 50 度),此外,让腿在该范围内来回移动,就像钟摆一样。
由于我要进行 65 度的扫描,因此我尝试将“%360”更改为“%65”作为第一步。但这使得腿走得太快了,如果我想使用模数,我不能使用较低的增量值,它只适用于整数。
是否有另一种方法来实现所需的第一步行为?更重要的是,我怎样才能让腿来回走动?使用多次调用的函数来概念化有点困难(与仅使用处理所有事情的循环结构相比,我在意识到这一点之前尝试过!)