sonnensystem
-
Warum nimmst du eine Matrix, wenn du doch einen Vektor nehmen könntest? Wofür stehen die Werte in der Matrix? Und warum nimmst du 365.256, wenn es doch eigentlich 365.2425 Tage sind?
-
weil wirs so machen sollen. ist vorgegeben

-
wxSkip schrieb:
Und warum nimmst du 365.256, wenn es doch eigentlich 365.2425 Tage sind?
Es geht um das siderische Jahr, also um eine vollständige Umrundung von außen betrachtet.
~Edit: Pedanterie~
-
also, falls ich das jez richtig verstanden habe. ich verschiebe die planten in den ursprung lasse sie rotieren und verschieb die wieder zurück.
Dann verschieb den Mond zur Position des Planeten, dann in den ursprung, lass ihn wie den Planeten rotieren, schiebe ihn an die position des planeten, rotiere ihn mit der Mondrotation und schieb den Mond wieder weg. Sollte dann doch passen, oder?
-
klingt plausibel. nur schaff ich das grad iwie nich.. -.- mein hirn will nich mehr so wie ich will.. ich kann das ja nich alles in eine zeile schreiben weil sich ja sonst die ganzen translates und rotates multiplizieren und dann totaler müll iwie rauskommt.
-
Dann mach es nicht in einer Zeile, sondern schön hübsch nacheinander. Achte auf die richtige Reihenfolge der Translationen und Drehungen, die sind nicht assoziativ.
-
ich heul gleich xDD es klappt immer nur eine sache
entweder der mond dreht sich an nur einem punkt um die erde, aber nicht mit der erde um die sonne. oder der mond dreht sich mit der erde um die sonne aba bleibt immer an der gleichen stelle von der erde.... sobald ich beide aufeinmal mach, saust der mond immer von iwo her durchs bild xD zum verzweifeln
-
Wie sieht Dein Code denn jetzt aus?
-
void main () { Window myWindow(640, 480, "Sonnensystem - Gruppe B"); // Positionierung Mesh sonne("../meshes/D/yellow.obj"); Mat4f position_sonne = translate(320, 240, 0) * scale(6); sonne = transformPoints(sonne, position_sonne); Mesh merkur("../meshes/D/gray.obj"); Mat4f position_merkur = translate(320, 298, 0) * scale(1.2); merkur = transformPoints(merkur, position_merkur); Mesh venus("../meshes/D/gray.obj"); Mat4f position_venus = translate(320, 340, 0) * scale(3); venus = transformPoints(venus, position_venus); Mesh erde("../meshes/D/blue.obj"); Mat4f position_erde = translate(320, 390, 0) * scale(3.2); erde = transformPoints(erde, position_erde); Mesh mond("../meshes/D/gray.obj"); Mat4f position_mond = translate(345, 390, 0) * scale(0.8); mond = transformPoints(mond, position_mond); Mesh mars("../meshes/D/orange.obj"); Mat4f position_mars = translate(320, 468, 0) * scale(1.6); mars = transformPoints(mars, position_mars); Mesh phobos("../meshes/D/gray.obj"); Mat4f position_phobos = translate(338, 468, 0) * scale(0.75); phobos = transformPoints(phobos, position_phobos); Mesh deimos("../meshes/D/gray.obj"); Mat4f position_deimos = translate(290, 468, 0) * scale(0.5); deimos = transformPoints(deimos, position_deimos); positionLight(Vec4f(320,240,0,1)); while (myWindow.IsOpen()) { myWindow.HandleEvents(); myWindow.Clear(); // Code rasterizeMesh(sonne); Mat4f move_merkur = translate(320, 240, 0) * rotate(360 / 87.969) * translate(-320, -240, 0); merkur = transformNormals(merkur, move_merkur); merkur = transformPoints(merkur, move_merkur); rasterizeMesh(merkur); Mat4f move_venus = translate(320, 240, 0) * rotate(360 / 224.701) * translate(-320, -240, 0); venus = transformNormals(venus, move_venus); venus = transformPoints(venus, move_venus); rasterizeMesh(venus); Mat4f move_erde = translate(320, 240, 0) * rotate(360 / 365.256) * translate(-320, -240, 0); erde = transformNormals(erde, move_erde); erde = transformPoints(erde, move_erde); rasterizeMesh(erde); Mat4f move_mond = translate(320, 240, 0) * rotate(360 / 365.256) * translate(-320, -240, 0) * translate(320, 390, 0) * rotate(360 / 27.3217) * translate(-320, -390, 0); mond = transformNormals(mond, move_mond); mond = transformPoints(mond, move_mond); rasterizeMesh(mond); Mat4f move_mars = translate(320, 240, 0) * rotate(360 / 686.98) * translate(-320, -240, 0); mars = transformNormals(mars, move_mars); mars = transformPoints(mars, move_mars); rasterizeMesh(mars); Mat4f move_phobos = translate(320, 468, 0) * rotate(360 / 224.701) * translate(-320, -468, 0); phobos = transformNormals(phobos, move_phobos); phobos = transformPoints(phobos, move_phobos); rasterizeMesh(phobos); Mat4f move_deimos = translate(320, 468, 0) * rotate(360 / 224.701) * translate(-320, -468, 0); deimos = transformNormals(deimos, move_deimos); deimos = transformPoints(deimos, move_deimos); rasterizeMesh(deimos); myWindow.Display(); }da wo die translates usw untereinander stehn, is das was ich meine verstanden zu haben was kleiner troll meint. nur funzt das nich, aba ich geh ma davon aus das es an mir liegt weil ich grad echt überfordert bin.. kann mir denn keiner sagen wie ich das richtig schreibn damit ichs für die zukunft weiß, und nich weitere stunden wut, wegn meines eigenen nichtkönnens aufkommt xD
-
mauka schrieb:
da wo die translates usw untereinander stehn, is das was ich meine verstanden zu haben was kleiner troll meint. nur funzt das nich, aba ich geh ma davon aus das es an mir liegt weil ich grad echt überfordert bin.. kann mir denn keiner sagen wie ich das richtig schreibn damit ichs für die zukunft weiß, und nich weitere stunden wut, wegn meines eigenen nichtkönnens aufkommt xD
Zu unlesbar wegen zuvieler magischer Werte. Außerdem kann das keiner zuhause ausprobieren, weil uns deine Bibliotheken fehlen. Man kann es daher nur mit Worten erklären:
Wenn du die Erde dreht:
0. Den Mond die gleiche Drehung machen lassen.
Dann, wenn der Mond drankommt:
1. Position der Erde von der Position des Mondes abziehen
2. Monddrehung anwenden
3. Position der Erde hinzu addieren