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???