Matrix in Sonnensystem



  • aha, wusste nicht dass es einen unterschied macht, welche Matrizen man zuerst multipliziert.
    Danke für die schnellen Antworten



  • Sicher!
    Bei Matrizen gilt NICHT: A * B = B * A
    Ist ja auch logisch. Es ist ja auch ein Unterschied, ob man zuerst dreht und dann verschiebt oder umgekehrt (siehst Du hier ja).



  • Kann es sein das man in OpenGL erst rotiert und danach das Objekt Transformiert um es um den Weltnullpunkt zu drehen?

    In DirectX erst transformiert und danach rotiert?

    Also genau umgekehrt.

    PS: War das in DX6 nicht genauso wie in OpenGL.



  • Es ist bei beiden gleich. Wenn Du ein Objekt willst, das sich um seine eigene Achse dreht: erst drehen, dann verschieben.



  • Hi!
    Ich habe das auch einmal geschrieben. Ich hatte X Planeten und eine Sonne. Die Planetn haben sich ellipsenartig um die Sonne gedreht. Dabei war die Sonne im Brennpunkt der Ellipse.

    Als erstes habe ich mir eine Klasse geschrieben die mir eine Kugel erstellt.
    Dannach habe ich mir ein paar Texturen für die verschiendnen Planetentypen erstellt. Danach habe ich eine Struktur für einen Planeten defineiert, in der ich den Druchmesser/2(=Radius:D) und die Geschwindigkeit speichere.

    Jetzt muss ich die Positionen von den Planeten ausrechenn um sie zu zeichen.
    Hier habe ich mir die Ellipsengleichung zur Hilfe genommen 🙂

    x = a cos q, y = b sin q
    

    Hier findest du die variablen declarationen.
    http://www-sst.informatik.tu-cottbus.de/~wk/cg_v05a.pdf

    Somit konnte ich dann mein SonnenSystem zeichnen. Ich habe die XZ ebene genommen.
    Mit diesen oben genannten Möglichleiten kannst du auch noch die ebene drehen .. etc. 😉

    ACHSO:
    Du erstellst deine Sphere einfach so, dass sie auf dem Ursprung liegen und dann einfach drehen und dannach auf die Position verschieben.

    Wenn du ein X-Objekt .. oder der gleichen hast, dann addierst du alle X, Y und Z werte und teilst sie durch die Anzahl der Vertices deiner Kugel und rechnest somit den Verschiebungsvector zum Ursprung aus..

    Bye

    [ Dieser Beitrag wurde am 15.04.2003 um 18:13 Uhr von Cenetix editiert. ]



  • glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     
    glLoadIdentity();                                       
    glTranslatef(-1.5f,0.0f,-6.0f); 
    glRotatef(rtri,0.0f,1.0f,0.0f);
    .
    .
    .
    

    So wird die Rotation im Nehe Tutorial gemacht. Erst verschieben dann rotieren.



  • Dann dreht sich das Objekt aber um den Koordinatenursprung und nicht um seine eigene Achse.



  • Dann dreht man das Sphere vor dem Translation 😃



  • Ja, habe ich ja auch gesagt. Aber Netzwerk-Latenz meinte ja, das sei bei OpenGL genau umgekehrt.



  • Hm, das kann ich dann nicht beurteilen, aber ich glaube eher nicht, dass das so ist 😃


Anmelden zum Antworten