Ich versuche mal, auf ein paar Aspekte einzugehen:
Zitat von
Taggs:
Dann müsste ich über jeden Körper (Ruhe-)Masse m0, Startposition x0 (als Vektor) und Momentangeschwindigkeit v0 an dem Punkt, auf den der Vektor x0 zeigt, wissen.
Richtig.
Zitat:
Da die Sonne bei mir in der Mitte des Bildschirmes stehen bleiben soll, habe ich mir gedacht, dass ich von der Sonne nur m0 und x0 brauche und diese Werte konstant bleiben.
Auch noch okay. Damit ist dein Koordinatensystem zwar nicht mehr inertial, aber der Fehler sollte noch ertragbar sein.
Zitat:
F(Koerper1, Koerper2) = (9,61 * m0(Koerper1) * m0(Koerper2)) / |x0(Koerper1) - x0(Koerper2)| // Das ist die normale Formel um die Kraft zwischen 2 Körpern zu berechnen.
Möööööp
http://de.wikipedia.org/wiki/Gravita...itationsgesetz
Zumindest di Konstante kommt mir spanisch vor - das sollten 6,67*10^-11 sein ...
Zitat:
Jetzt würde ich wie folgt die Position von Erde und Jupiter ausrechnen:
a(Erde) = [F(Sonne, Erde) * (x0(Sonne) - x0(Erde))] + [F(Jupiter, Erde) * (x0(Jupiter) - x0(Erde))] // Wenn ich x0 von Erde von x0 von Sonne subtrahiere, habe ich ja letzlich einen Vektor von dem Punkt der Erde zum Punkt der Sonne, der dann nur noch mit der Anziehungskraft "gewichtet" werden muss. Am Ende werden alle gewichteten Vektoren zwischen den Planeten aufaddiert, sodass ich die Richtung und Beschleunigung in einem Vektor habe. Nach meinem Vorgehen, habe ich in a jetzt einen Richtungsvektor, wohin der Planet fliegt, und auch wie "schnell".
Fehler: Du rechnest die Summe aller Kräfte aus (vektoriell natürlich) - das sit noch richtig - aber das ist nicht gleich der Beschleunigung. F = m*a bzw. umgestellt: a = F/m
Du musst die Kraft noch durch die Erdmasse teilen. Und die Kräfte wirken immer auf der direkten verbindungslinie - Wenn die Kraft nur ein Skalar ist, musst du sie mit dem
normierten Differenzvektor multiplizieren.
Zitat:
v(Erde) = v0(Erde) + dt * |a(Erde)| // a darf hier natürlich nicht der Vektor sein, sondern muss die Länge des Vektors sein, deshalb Betragsstriche. Oder muss ich doch den Vektor a nehmen? Brauche ich nur die Geschwindigkeit als Zahl in v oder ist v ein Vektor (Geschwindigkeitsvektor)? Das ist nämlich schon mal mein 1. Problem.
Sowohl Position, als auch Geschwindigkeit als auch Beschleunigung als auch die Kraft sollten Vektoren sein
Zitat:
x(Erde) = x0(Erde) + dt * v(Erde) // Hier müsste v(Erde) nämlich ein Vektor sein ...
Dann würde ich die 3 Zeilen (a, v und x) noch einmal für den Jupiter ausrechnen, allerdings würde ich da nicht die neuen Werte von der Erde nehmen, sondern noch die "alten". Ich denke das gibt weniger Ungenauigkeitsfehler, wenn mein dt hinreichend klein ist.
Des passt scho. Du kannst ja immer erst alle Beschleunigungen errechnen (die von den anderen Körpern abhängen) und dann für jeden Lörper Geschw. & Position updaten.
Zitat:
Neben dem Problem mit der Geschwindigkeit / mit dem Geschwindigkeitsvektor, habe ich noch ein 2. Problem, die "Verhältnisse". Bei der Berechnung der Beschleunigung, gewichte ich ja die Vektoren zw. den einzelnen Planeten mit der Kraft zwischen ihnen, bevor ich alle Vektoren zusammenaddiere. Kann ich das so lassen, oder muss ich noch Faktoren einfügen? Ich weiß nicht wie ich das erklären soll, aber ich befürchte so, werden meine Planeten in null-komma-nix vom Bildschirm fliegen. Schließlich gibt mir F einen Wert in Newton zurück. Ich kann mir beim besten Willen nicht vorstellen, dass ich den einfach mit einem Vektor multiplizieren kann.
Siehe oben. Dein Kraftvektor ist in Newton aber die Planeten haben auch eine zeimlich große Masse
Zitat:
Bezüglich des dt kann ich einfach eine beliebige Zahl einsetzen, ohne dass ich dadurch die anderen Werte (verhältnismäßig) ändern müsste, oder? Ich nehme mal an, dass bei dt = 1 jede Stunde die Planeten neu berechnet werden. Ist das richtig so?
SI-Einheit für Zeit ist die Sekunde.
Puh, das wäre alles - ich hoffe ich konnte helfen ^^
Was die Skalierung angeht: Du braucht einen Skalierungsfaktor der angibt, wieviele km pro Pixel angezeigt werden sollen. Oder du schrumpfst von vornherein die Bahnen der Planeten, musst dann aber ihre Massen ebenso anpassen ...