OpenGL Trigonometrie Hilfe (C++)

Hallo,
ich habe folgendes Problem: ich möchte in c++ (opengl) ein objekt in seine blickrichtung bewegen. Dazu benutze ich die Trigonometrie wie folgt: in einem einheitskreis gilt ja: sin(alpha) = Y-Achse, cos(alpha) = X-Achse. Nachdem mein Programm die Werte nun ausgerechnet hat, bewegt es das object mit diesen Koordinaten, so bewegt es sich in die Blickrichtung. Hier der codeausschnitt: zwischen = rotate / 360;
erg = zwischen * (2 * 3.141);
xx += sin(erg);
yy += cos(erg);

mit den ersten 2 zeilen rechne ich die Grad-Werte in Bogenmaß um, wobei rotate mein Winkel alpha ist. Der code mit dem ich das object bewege sieht dann so aus:

glTranslatef(xx, yy, zz);

zum drehen nehme ich folgenden code:

rotate += 2;
if (rotate == 360)
{
rotate -= 360;
}

glRotatef(rotate, 0.0f, 1.0f, 0.0f);

nun ist folgendes Problem: mit diesem code passiert beim forwärtsgehen garnichts! Wenn ich aber den ausgerechneten sin/cos wert mit 10 multipliziere, bewegt es sich zwar, und auf dem ersten blich sieht es auch so aus, als würde es sich in seine Blickrichtung bewegen, ABER: es bewegt sich in wahrheit immer nur im 90 grad winkel an den achsen entlang und ändert die richtung erst, wenn es nahe genug an der ersten achse ist! Was hab ich falsch gemacht???

Hallo Metler777,

Richtig ist cos(alpha) X_Achse und sin(alpha) Y-Achse. Warum addierst du aber xx += sin(…) wenn doch cos(…) für die X-Achse zuständig ist?
Analog für yy += sin(…)

Das erklärt dann auch den Winkel um 90 Grad (eigentlich 88 Grad), da
cos(x) = sin( PI/2 -x ) und sin(x) = cos( x - PI/2)

in deinem Code berechnest du eine Drehung von "rotate +=88, da du X- und Y-Achse vertauscht hast.

Zar etwas spät, aber vllt hilft es dir ja doch noch.

Grüße,
Benny1984