Matrix in Sonnensystem
-
tut mir leid, aber das versteh ich nicht. Wenn ich das Objekt vom Urpsrunspunkt wegbewege und dann rotiere, rotiert es sich ja immernoch um eine der eigenen Achsen und wenn ich es dann wieder an den Punkt zurückbewege, ist es doch auf seiner Bahn um den Mittelpunkt kein Stück vorran gekommen!? Ich will quasi, dass sich das Objekt um das Zentrum der Welt Matrix dreht.
Das Tutorial von miller_m war ja quasi genau das, was ich gesucht habe, nur dass es OpenGL war. Das muss es doch auch für DirectX geben!
-
Original erstellt von Creon:
ich habe 9 Kugeln, die sich mit verschiedener Geschwindigkeit um einen Mittelpunkt drehen.Du bist wohl nicht mehr so ganz auf dem neuesten Stand, oder?!
http://www.erf.ch/themen/art2837.html
-
Original erstellt von Creon:
tut mir leid, aber das versteh ich nicht. Wenn ich das Objekt vom Urpsrunspunkt wegbewege und dann rotiere, rotiert es sich ja immernoch um eine der eigenen Achsen und wenn ich es dann wieder an den Punkt zurückbewege, ist es doch auf seiner Bahn um den Mittelpunkt kein Stück vorran gekommen!?http://www.njnet.edu.cn/info/ebook/graph/OpenGLRedBook/4346.html
Versuch bitte ein bisschen selbst mitzudenken.
-
Achso, das ist aber nicht wirklich schwer!
Wegbewegen, dann rotieren.
Translation * Rotation
-
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 genommenx = a cos q, y = b sin q
Hier findest du die variablen declarationen.
http://www-sst.informatik.tu-cottbus.de/~wk/cg_v05a.pdfSomit 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