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 setzen

    zur 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 richtung

    muss 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


  • Mod

    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.


Anmelden zum Antworten