OpenGL正弦函数向点移动

时间:2013-02-05 19:07:50

标签: c opengl glut

我有一个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上得到一个很好的“正弦波”?

OH,我在显示功能中使用此功能:

glTranslatef(xPos, yPos, 0.0);

1 个答案:

答案 0 :(得分:0)

cosf采用输入为Radians的double(浮点)。这意味着,在增量为1.0的情况下,y的每个方向只有~4步。您可以尝试将x递增一些浮点值,例如0.1或其他值。