glRotatef()
-
Bei
glRotatef(angle,0.0f,0.0f,0.0f);
Das Objekt rast nach vorne (in Z) und rast wieder zurück und immer wieder. Ich habe immer noch nicht verstanden wie die Funktion funktioniert
Ich hätte gemeint das das Objekt gar nicht rotiert.
-
sollte es auch nich...
glTranslatef is eigentlich für das bewegen zuständig
glTranslatef(0.0f,0.0f,-10.0f) würde es z.b. etwas nach vorne auf der z achse setzenzur funktion:
glRotatef(30.0f,1.0f,0.0f,0.0f);
rotiert z.b. um 30° um x
glRotatef(-30.0f,1.0f,0.0f,0.0f);
rotiert um 30° um x in die andere richtung
-
glTranslatef is eigentlich für das bewegen zuständig
eben. ich benutze glRotatef(angle,0,0,0); und das Ding bewegt sich nach vorne.
glRotatef(-30.0f,1.0f,0.0f,0.0f);
rotiert um 30° um x in die andere richtungmuss das nicht
glRotatef(30.0f,-1.0f,0.0f,0.0f);lauten?
-
poste mal n bissi mehr code aus deiner renderfunktion
was rotatef betrifft... ne hab nochmal nachgeschaut... meins is richtig
-
ob -1 oder +1 ist egal, weil es immer die x achse bleibt, es sollte sich dann lediglich die rotationsrichtung ändern.
wenn du glRotatef(angle,0.0f,0.0f,0.0f); angibst, dann fehlt die rotationsachse, dadurch könnte es sein das intern durch die länge von 0.f geteilt wird und dementsprechend schaut das dann unverhersehbar aus.
es kommt auf die reihenfolge an in der du die transformationen durchführst ob das object sich erst rotiert und dann z.B. mit glTranslate verschoben wird, oder ob das object erst verschoben wird und sich dann um den ursprung (der nicht die object mitte ist!!!) rotiert, somit hast du den effect als ob du einen planeten um eine sonne rotierst, eine drehung ist drinne, aber du merkst gewissermassen dass sich der planet bewegt und nicht nur rotiert.
rapso->greetS();
-
und die reihenfolge ist so:
glTranslatef(); // dann dies
glRotatef(); // wird zuerst durchgeführt
dein objekt (glBegin etc.)also ist die reihenfolge von unten nach oben! dein objekt wird hier zuerst rotiert und dann veschoben. verschiebst du aber zuerst(also glTranslatef und glRotatef vertauscht) und rotierst du dann, hast du einen satelliteneffekt um den ursprungspunkt.