私は Open GL プロジェクトを持っています。2D オブジェクトは、目的地に到達するまで目的地に向かって移動し、現在の X と 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) は、Destination X から離れているか近いかに基づいてインクリメントします。明らかに、これは機能しません。私は cosf を間違って使用しているだけだと確信しています。目的地 x と y に素敵な種類の「正弦波」を得る方法を知っている人はいますか?
ああ、私は私の表示機能でこの機能を使用しています:
glTranslatef(xPos, yPos, 0.0);