![]() |
Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Für die anstehende Seminararbeit (Thema: Planetenbahnen im Doppelsternsystem) brauche ich eine anständige Simulation.
Nun habe ich selbst was geschrieben bin aber jetzt schon auf Probleme gestoßen: In Sonnensystemen allgemein und in Doppelsternsystemen im Besonderen gibt es enorme unterschiede in den Umlaufzeiten der Planeten/Sonnen. Zb. hat Merkur nur eine Umlaufzeit von ca 87 Tagen während schon Jupiter 12 Jahre braucht. D.h. man kann nicht beide gleichzeitig sinnvoll anzeigen. (prinzipiell kein Problem) Das Problem an der Sache ist aber nun, dass wenn eine Simulationsgeschwindigkeit gewählt wird, die für das Betrachten von Jupiter geeignet ist, dass die Berechnungsintervalle für Merkur zu klein werden. Praktisch endet das meist in einer Änderung der Umlaufbahn wenn nicht sogar in einem Verlassen des Systems. Meine bisherige Lösung: Zeichenmethode und Berechnungsmethode trennen: Die Zeichenmethode wird per Timer alle 30ms aufgerufen und die Berechnungsmethode bei Application.onIdle. Dabei kriege ich im Leerlauf 150.000 Berechnungen pro Sekunde und 33 FPS. Bei allen inneren Planeten + Sonne (also 5 Körper) sind es ca 50.000 BPS. Nun meine Frage: Macht meine bisherige Lösung (konstante FPS soviel BPS wie möglich) Sinn? Bzw. ist dieses Problem mit normalen Rechnern überhaupt lösbar? Für meine Seminararbeit sollten Merkur + Saturn gut laufen. Wäre über Ideen dankbar |
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Zitat:
Um Merkur und Saturn gut darzustellen bräuchtest du eben Intervalle, mit denen Merkur noch funktioniert. Saturn geht dann ziemlich sicher auch noch. Wenn das dann zuviele Berechnungen werden kannst du versuchen, z.b. Jupiter und Saturn nur jeden 2. Berechnungsschritt zu berechnen. |
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Dazu gibt es IMHO mehrere mögliche Lösungsvorschläge, die sich auch kombinieren lassen:
Ich hatte mal ein ähnliches Problem - dabei ging es aber nur um die Indexierung von Audiosamples in einem großen Zeitraum - meine Lösung war es keinen Extended (80 Bit) sondern einen Int64 mit festen 16 Bit Nachkommastellen zu verwenden. |
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Zitat:
![]() |
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Überzeugt ;-)
|
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
@jfheins:
Es geht nicht darum, dass Saturn zu kleine Zeitintervalle in der Berechnung hat, sondern Merkur zu große. Du musst dir vorstellen: wenn man Saturn so anzeigen will, dass man nicht einschläft bevor er die Sonne einmal umkreist braucht man eine Geschwindigkeit die bewirkt, dass Merkur in einer Sekunde mehrmals die Erde umkreist. Bei der Umrechnung von Kraft auf Beschleunigung ruft das dann erhebliche Ungenauigkeiten hervor. Je größer das Intervall zwischen den Berechnungen desto größer die Ungenauigkeiten. Also zusammengefasst habe ich zwei Möglichkeiten das hinzukriegen: 1. Optimierung des Berechnungsprozesses 2. Extra Thread nur für die Berechnung Ich denke, dass alleine langt nicht. Wahrscheinlich werde ich eine Art Notbremse einbaun, die die Simulationsgeschwindigkeit bei kritischen Werten einfach automatisch senkt. Wird der Pc halt nacht für nacht durchlaufen ;). |
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Zitat:
|
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Zitat:
|
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
Zitat:
|
AW: Gravitationssimulation: Simulationsgeschwindigkeit - Berechnungsintervall
..ups, ist die Erde denn nicht mehr der Mittelpunkt des Universums ;-)
Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz