Three Body Orbits

The hunt for new orbits.

Every orbit in the atlas was found by someone searching. Your browser can search too: it sets three bodies loose under gravity, over and over, and whenever a path comes back close to where it began, it tries to close the loop.

  1. 1Three bodies, set loose.A fresh arrangement of masses and speeds, then nothing but gravity for a few dozen time units.
  2. 2Watch for a return.If the path comes back near its start, your browser nudges the starting conditions until the loop closes, or gives up.
  3. 3Check before it counts.A closed loop is only a proposal: your browser refines it, and the server checks it in double precision before it is recorded. The first loop of a new topology, or one that would be labelled stable, the server computes again itself at high precision.

Each test is one starting arrangement of three masses, traced for a few dozen time units with unsoftened Newtonian gravity. The kernel, the numerical program your browser runs, records how far the path is from its start at every step and, from the closest returns, runs a bounded Newton shooting on the initial conditions and the period.

“Didn’t close” means no closing orbit was found within this test’s limits, not that none exists. A “promising return” is a proposal: a loop this search already holds, or an orbit of the atlas, is recorded as that orbit. What remains is refined to 106 bits by the finder’s own browser and checked by the server in double precision: that the refined loop closes, is the proposal’s orbit and is not one already held. Recorded: refined in the finder’s browser, checked by the server in double precision, and kept. For a new loop of a family the search already knows, that is the final state: no further check is planned. Verified: computed again by the server itself at 106 bits or more. The first loop of a new topology, a loop that would be labelled stable and a random sample of the rest go on to this check. Only a loop the server has checked reaches the checked loops, labelled linearly stable or unstable for small planar perturbations, and each says which check it had. Known reference orbits are placed in the stream on purpose, to check the numerics, and are labelled as such.

Every checked loop is compared with the atlas by its scale-free period and the shape of its three pairwise distances; a match is labelled as that known orbit and links to it, and a loop traversed several times is reduced to its primitive period. Its braid, the sequence of moments at which the bodies line up, is compared with the published catalogues: the atlas, the Sofia group’s zero-angular-momentum sets (Hristov, Hristova and co-authors), the Shanghai lists of Li, Liao and co-authors (2017 to 2022), the BHH family and its satellites (Janković and Dmitrašinović 2016) and Rose’s Bestiary (2016). A new topology is a braid word that is in none of the published catalogues the hunt compares with and no repeat of a known braid; those chart equal masses and a handful of other mass ratios, while most of these loops have masses 1 : μ : 1 at ratios nobody has charted, so a new word is expected there. The count of new topologies says how many the search has checked, not how many exist. Whether an unmatched loop is new remains for review. Nothing here is added to the atlas automatically.

The tests go to the kinds of seed whose checked loops have turned out new most often, or start beside loops this search has already checked, since the neighbourhood of a find is where its relatives are. Once the search holds about twenty loops of a family at a mass class, a further member is recorded only when it widens what is known of the family (its range of masses, or the window in which it is stable), and the search is steered away from it. Your browser reads a promising return’s braid word itself, so a member that adds nothing is declined in the browser and only counted; a sample of these declines is sent up whole and checked by the server.

Something not working, or an idea for the hunt? Write to info@threebodyorbits.com.