我有一个 Open GL 项目,其中我有一个 2D 对象,它应该向目标点移动直到它碰到它,然后它将停止,直到 currentX 和 Y 到达目标 X 和 Y。这是我的 glutTimerFunc 中的代码:
void callbackTimerGlutFunc(int value)
{
spinX += SPEED_X;
spinZ += SPEED_Z;
if (spinX > 360.0) {
spinX = spinX - 360.0;
}
if (spinZ > 360.0) {
spinZ = spinZ - 360.0;
}
if (xPos != DESTINATION_X || yPos != DESTINATION_Y)
{
if (xPos < DESTINATION_X)
xPos += speed;
if (xPos > DESTINATION_X)
xPos -= speed;
yPos = cosf(xPos); // THIS IS THE NEW Y CALCULATION
}
glutPostRedisplay();
glutTimerFunc(100, callbackTimerGlutFunc, value);
}
基本上,我会根据当前 x (xPos) 是离目的地 X 更远或更近来增加它。很明显,这不起作用。我很肯定我只是在使用 cosf 错误。任何人都知道我怎样才能得到一个很好的“正弦波”到我的目的地 x 和 y?
哦,我在我的显示功能中使用了这个功能:
glTranslatef(xPos, yPos, 0.0);