Die Berechnung der regulären Synodenperiode zweier umlaufender Körper ist ziemlich einfach, aber was wäre, wenn ich wissen wollte, wann sie sich an einer bestimmten Position treffen würden? Zum Beispiel, wenn sie sich eine Periapse teilen. (Mit "gleicher Position" meine ich, dass sich die beiden umlaufenden Objekte und der zentrale Körper auf derselben Linie befinden.)
Ich weiß, dass dies nur gilt, wenn Sie die Periode eines der Körper als Bruchteil des anderen ausdrücken können, also eine 1 und ein Quadrat (2) Orbit würde niemals synchronisieren.
Aber was wäre, wenn ich mich für eine akzeptable Marge entschieden hätte? (wie 10 Grad)
Derzeit erzwinge ich dies brutal.
Meine Frage ist: Ist es eine Möglichkeit, das nächste Mal zu berechnen, wann sich zwei Körper angesichts ihrer Umlaufzeit und eines akzeptablen Fehlers am selben Ort treffen würden?
Die Objekte haben keine merkliche Wirkung aufeinander oder auf den zentralen Körper. Beschränken Sie sich bei Bedarf auf kreisförmig oder koplanar.
Das hat letztendlich mein Problem gelöst. Diese JavaScript-Funktion nimmt die Parameter: radiusRatio
, den Radius des äußersten Objekts dividiert durch den innersten. innerAnomaly
, die wahre Anomalie der innersten Objekte von der Referenzrichtung, das gleiche gilt für outerAnomaly
, errorMargin
ist der maximale Winkel zwischen einem der beiden Radiusvektoren oder der Referenzrichtung und limit
gibt an, wie viele der innersten Objekte umkreisen, für die simuliert werden soll.
innerAnomaly
Beachten Sie, dass das für , outerAnomaly
und verwendete Winkelmaß errorMargin
in Bruchteilen einer Umlaufbahn angegeben ist, nicht in Grad oder Bogenmaß.
sameLine = function (radiusRatio,innerAnomaly,outerAnomaly,errorMargin,limit){
results = [];
newMargin = errorMargin;
periodRatio = Math.pow(radiusRatio,3/2);
for (i = 1; i < limit; i++){
anomaly = (outerAnomaly + (i - innerAnomaly)/periodRatio) % 1;
if (anomaly > 1 - anomaly){
anomaly = 1 - anomaly;
};
if (anomaly <= newMargin){
results.push([i - innerAnomaly,anomaly]);
newMargin = anomaly;
};
};
return results;
};
Es gibt ein Array aus, das Sub-Arrays mit den Begegnungsdaten im Format von 1 Anzahl von Umlaufbahnen enthält, die das innerste Objekt ausgeführt hat, und 2, was die Fehlerspanne war. Der nächste Eintrag ist das nächste Mal, wenn der Fehler kleiner ist.
Sie ist natürlich auf koplanare, kreisförmige Umlaufbahnen beschränkt, und die Masse der beiden umlaufenden Objekte ist vernachlässigbar.
Ich habe eine ausführlichere Erklärung für ein verwandtes Problem unter https://physics.stackexchange.com/a/232918/102747
Brian Lynch
SE - hör auf, die Guten zu feuern
Markus Adler
SE - hör auf, die Guten zu feuern
Benutzer7073
SE - hör auf, die Guten zu feuern
Benutzer7073