2013-02-05 29 views
0

我有一個Open GL項目,其中有一個2D對象,應該移動到目標點直到它碰到它,然後它將停止,直到currentX和Y到達目標X並且Y.這裏是我在我的glutTimerFunc代碼:OpenGL正弦函數移向點

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); 
+0

仍然在解決這個問題? – chux

回答

0

cosf發生在一個雙(浮點),其輸入爲弧度。這意味着在1.0的增量下,y的每個方向只會有〜4步。您可以嘗試通過浮點值(例如0.1或某些值)遞增x。