OpenGL - glRotate



  • Also,
    bei OpenGl kann man Objekte mit dem Befehl glRotate ja drehen.
    Meine Frage ist jetzt, kann man irgendwie beeinflußen um welchen Punkt dass Objekt gedreht wird?
    Weil standardmäßig wird alles ja um den Koordinatenmittelpunkt gedreht, oder?
    Ich kann jetzt dann wahrscheinlich mit glTranslate dass Objekt so verschieben, dass der Koordinatensystemmittelpunkt der Punkt ist um den ich das Objekt drehen wollte, und das Objekt dann wieder zurück verschieben (hoffe das ist verständlich genug ausgedrückt), aber kann man irgendwie der Funktion glRotate auch sagen um welchen Punkt gedreht werden soll? 😕
    Ich hoffe, dass das keine allzu dumme Frage ist... 🙄



  • Gibt keine Doku, wo steht, was man der Funktion übergeben kann?

    Bye, TGGC (Pipe my World.)



  • Also glRotate kannst du nur einen Vektor geben um den gedreht werden soll und den Winkel. Aber du kannst glMultMatrix benutzen und Translation und Rotation in eine Matrix packen. Naja, vielleicht hat auch jemand anders ne bessere Idee. Mit OpenGL kenne ich mich nicht wirklich aus.



  • yodas schrieb:

    Weil standardmäßig wird alles ja um den Koordinatenmittelpunkt gedreht, oder?

    Nein. Um die Achse die Du angibst natürlich. 🙄



  • ja, um die achse die ich angebe, aber ich meinte ja nicht wierum es gedreht wird (also das mit der achse) sondern halt den punkt um den man das dreht. keine ahnung wie das heißt. ich mein das halt so:

    (1)         |(2)      
    o-------->[b]o[/b] | o-->[b]o[/b]  
     \       /  |  \ /
      \     /   |   x
       \   /    |
        \ /     |
         x      |
    

    x ist jetzt halt der punkt um den ich drehe, und im 1. fall ist das "o" ja an einer ganz anderen stelle als beim 2. fall. so meinte ich das, aber mit glRotate direkt scheint das ja nicht zu gehen, sondern man muss das mit Translation und so machen.
    danke für die schnellen antworten 👍



  • *schnallichnet* 😕



  • Das Objekt wird logischerweise um seinen Ursprung gedreht (0,0,0)
    Das heisst, wenn du den Punkt verändern willst um den das Objekt gedreht wird, musst du seinen Ursprung verschieben.



  • Lalala, anstatt zu raten, was zu gehen scheint, gibts kein Doku zum Nachlesen?

    Bye, TGGC (Pipe my World.)



  • Auf das er verwirrt sein möge:

    glRotated, glRotatef
    The glRotated and glRotatef functions multiply the current matrix by a rotation matrix.

    void glRotated(
    GLdouble angle,
    GLdouble x,
    GLdouble y,
    GLdouble z
    );

    void glRotatef(
    GLfloat angle,
    GLfloat x,
    GLfloat y,
    GLfloat z
    );

    Parameters
    angle
    The angle of rotation, in degrees.
    x, y, z
    The x, y, and z coordinates of a vector, respectively.
    Remarks
    The glRotate function computes a matrix that performs a counterclockwise rotation of angle degrees about the vector from the origin through the point (x, y, z).

    The current matrix (see glMatrixMode) is multiplied by this rotation matrix, with the product replacing the current matrix. That is, if M is the current matrix and R is the translation matrix, then M is replaced with M·R.

    If the matrix mode is either GL_MODELVIEW or GL_PROJECTION, all objects drawn after glRotate is called are rotated. Use glPushMatrix and glPopMatrix to save and restore the unrotated coordinate system.

    😃



  • Na is' doch sonnenklar... 💡



  • ja, inzwischen weiß ich dann ja auch, dass man sowas nicht direkt mit angeben kann 😉


Anmelden zum Antworten