Show HN: Atlas of Space (atlasof.space)

770 points by gordonhart ↗ HN
Hello HN! Sharing a recent side project of mine, the Atlas of Space, that I built out to explore the Solar System.

As a long-time space nerd, I realized recently that I didn't have a good intuition on the scale, speed, and relative orientation of the celestial bodies around us. So over the break I built out a kind of spatial Wikipedia to click around and learn about planets, moons, asteroids, and other bodies orbiting the Sun.

The physics is all simulated in the browser using simple Newtonian mechanics. There's a lot left to do from here, including modeling objects in non-Keplerian orbits and replaying different spacecraft missions.

Hope you have fun clicking around, and curious to hear what I should improve next!

128 comments

[ 2.4 ms ] story [ 194 ms ] thread
Nice project! Is it possible to go backwards in time?
Love it, thank you for sharing. Can't wait to show my kids later!

Are the background stars randomly generated or do they correspond to the actual galaxy? Distant points of reference would be interesting to see.

Thank you! The background stars are a texture that I found on solarsystemscope.com, and _should_ correspond to the actual orientation of the firmament WRT your frame of reference. I'd love to add labels for salient stars.
Beatiful, maybe add a pan control, and configurable starting time + dt?
You can currently pan with right click, and I like the idea of a configurable starting time! Everything is mapped into the current epoch when you load your browser at the moment.
An alternative (like arrow keys) would be great, as I don't think I can right-click-drag with my touchpad.
Ah i see, i had tried right click and it wasn't working, but that was because I had a planet selected with its details showing, in the normal view it's fine. Makes sense not to pan when an object is selected, i guess.

I just had the browser window maximized while I was away from it for a while. This would make a nice active desktop, though I don't know enough about the software stacks involved with that to know whether it's possible.

(comment deleted)
Why is the sun called Sol? And not Sun? I thought Sol was a sci-fi thing?
I guess it's just a less common word for sun.

https://en.wikipedia.org/wiki/Sol_(Roman_mythology)

> Sol, borrowed from Latin, is used in contemporary English by astronomers and many science fiction authors as the proper name of the Sun to distinguish it from other stars which may be suns for their own planetary systems. [citation needed]

It's the name of our sun. Sun is what it is (or star). Sol is its name.
I don't know any solar physicist who calls our sun "sol" (and I know many), neither have I come across scientific papers doing so. A sol is a martian day though!
Fair point, I'll change (only after outing myself as somebody who pays more attention to writers than physicists)!
I don't think you should feel any pressure to change it. The Solar System belongs to the writers just as much as it does to the physicists and unless your target audience is specifically physicists, then the average visitor of your site will be more likely a consumer of sci-fi than a practitioner of physics.

The argument is rather pedantic to me since the word Sun comes from the old English, Germanic, and European, whereas Sol comes from the Latin, Helios from the Greek, svár Sanskrit, etc. They are all valid names for our local star.

I've never heard any solar physicist refer to "Sun". I have heard "the Sun" and "Our Sun".

"The Boss said please take the day off"

"Our Boss is nice"

"Jill is the boss"

"The Sun is bigger than any planet in our solar system"

"Our Sun is 8 light minutes away"

"Sol is the name of our sun"

I've not once heard a solar physicist use "sun" as a name

"Sun is bright" - bad grammar

I do not know how that would be possible with the technology used, but having a deeplink to a planet or object would be cool à la https://atlasof.space/Nix
This is so awesome. I've wanted something like this where you could visit all scales of the universe from tiny atoms, to the galaxy, to the broader universe. Does something like that exist in some form?
I think https://spaceengine.org/ fills part of your request. I haven't played it but I've watched videos about it and it looks like you can jump anywhere around the observable universe and look at any object you want.
This looks terrific. But it's Windows-only.
I think it's available on Steam which would mean you could theoretically use it on Linux with Steam's Proton compatibility layer.
Can that be tested before purchase?
Steam has a generous return/refund policy [0], so you could buy it, test it, and if it doesn't work request a refund.

[0]: https://store.steampowered.com/steam_refunds/

It worked for me last year, and entertained a few of us for a good while. Been meaning to revisit.

Side note: Elite Dangerous is on offer at the moment and that has been the only thing to give me that unnerving sense of scale you get when travelling between systems.

Great stuff! Just a wee thing - when I read "Atlas of Space" I immediately assumed it went beyond the solar system and clicked-through expecting to be able to track stars at least a few light years out. Reading your explanation here though, I see that's not intended.

Whatever, a job to be proud of!

I hear you, if we had a punchier name for the Solar System (ideally with its own TLD?) I for sure would have gone for it. Anyway, thanks for the nice comment.
Orrery
A big inspiration for this project was the "Solid Orrery" from Alastair Reynolds' Revelation Space series. I nearly went with this name!
I love this.

It’s really easy to get lost in Space when you zoom out and back in after twisting. I can see the planets on the edge of the screen, but can never seem to find them again.

Reloading, of course, fixes all. But maybe some compass to click on to recenter on yourself (earth) like on google maps.

Along the bottom toolbar there’s a “Reset” button (circular icon with an arrow) that recenters the UI.
Not surprisingly, this is actually one of the main issues with space travel and sending probes almost anywhere. Get slightly misasligned and you have take sightings on star patterns to try to somehow figure out where you are and what your orientation is. Voyager 1 and 2, Pioneer 10 and 11, and New Horizons all had / have variations on those systems.

Spacecraft Attitude Determination, https://en.wikipedia.org/wiki/Spacecraft_attitude_determinat...

Star Tracker, https://en.wikipedia.org/wiki/Star_tracker

Not to mention the astroinertial guidance system on ICBM nuclear missiles.

To wit, there are 12 Ohio class submarines each with 20 trident missiles each carrying 12 maneuverable nuclear warheads (475 kilotons each).

The missiles are launched under water, reach Mach 18 in 2 minutes, and don’t need GPS — they use the stars to deliver their payload.

I saw a test missile launch once before. It still terrifies me.

https://en.wikipedia.org/wiki/Ohio-class_submarine

I've had colleagues working on a pulsar navigation system to improve on star sightings.

The idea is to look for the X-ray signals coming from pulsars and then use the frequency of the pulse to identify the pulsar and then match that to a known map to figure out where you are. It's pretty cool and theoretically can work even for interstellar spaceflight.

https://en.wikipedia.org/wiki/Pulsar-based_navigation

Very beautifully done. Thanks for sharing, perhaps you can add the Trojan asteroids in the next iteration.
Co-orbitals are top-of-mind right now! As-is they can be simulated without issue (the system is defined as a DAG where each body defines the parent bodies it is gravitationally influenced by, e.g. Sun+Jupiter+Saturn for the trojans) but I haven't yet figured out how to get the proper starting position+velocity for them in the current epoch. I foresee a deep dive down the ephemeris rabbit hole in my future...
Initial positions and velocities are interesting. How did you get about that info?

I would love to read about how the orbital trajectories are calculated, and how is it done for co orbitals. Do you plan to write a blog on this?

Initial conditions are modeled by Keplerian elements around the main parent body. These are 6 scalars that describe the size, shape, and orientation of the orbital ellipse as well as the body's position along it at a given time (epoch). I scraped these values from various places including research papers, JPL databases, Wikipedia pages, and university web pages.

From there everything is mapped into a consistent epoch (now) and the initial position/velocity are calculated using a Keplerian->Cartesian transformation (the math here is a more or less straightforward coordinate transformation). The physical simulation is then run by updating these 2 Cartesian vectors, applying gravitational acceleration over ∆t.

This works pretty well, all things considered, but there's a lot of room for improvement to account for solar wind, relativistic effects, planets not being perfect spheres, etc. The Keplerian elements are also just an approximation of the true orbit, and this approximation can show up at high zoom levels (it's why planets don't always line up perfectly with their ellipses when you zoom in). I'm also still figuring out how best to get the initial position/velocity for objects that aren't in simple elliptical orbits (co-orbitals like the Trojans, objects on escape trajectories like Voyager probes). There's a lot for me to learn, maybe later I will write a blog post!

I can’t get enough of anything that helps me wrap my mind around the scale of objects and distances in the universe.

I recently discovered Epic Spaceman on YouTube, who makes incredible visual comparisons to help understand these scales. https://www.youtube.com/@EpicSpaceman

There’s also Universe Sandbox 2. But tbh this Atlas of Space is more accessible to me due to my various input limitations.

Space Engine let’s you explore the entire observable universe.

What is the denominator in dt? 60 ticks per second? Definitely not per second. It should be mentioned somewhere, like a tooltip.
Good callout — it's the animation rate for your browser, which is driven by your display and conditions on your machine (I've seen between 30-120Hz on my Macbook depending on the monitor used and device power status).
Would it be crazy to suggest scaling the speed by the time taken to calculate the previous tick (moving average?) to make the dt number a consistent irl rate? Say the user sets it to 8h and their computer can run at 30tps, then set the per-tick rate to 8h/30; if their computer can run at 60tps then set the rate to 8h/60, etc.
I was just gonna say, 8 hours per second does not match up with t advancing by 3 weeks per second.
Is there a way to lock the screen in order to be able to scroll around on mobile?
This is incredibly well done. Thank you!

Love that it works so seamlessly on mobile. I clicked on it expecting it to be almost impossible to use

Instead, I was able to easily navigate everything without getting lost

Also, the speeding up/down controls are excellent, very useful

I get "secure connection failed".
incredibly cool omfg
Awesome I like these 3D infinite canvas things
Well done! I could spend a long time on this.

One minor suggestion: you should make the labels clickable instead of just the planets/stars. I found it difficult to click on a tiny pixel on screen.

After 90s of playing I came back to add the same comment :)
... also the orbits themselves ideally? Maybe I missed it but in looking at some of the larger orbits it was hard to zoom in and out to figure out what orbit went with what. It would have been nice to more easily click on the orbit.

I really like it though.

Seconded. Also, please make the non-planet labels brighter. The contrast isn't good enough to read it.
This is very nice. I didn't know Pluto's orbit was more inclined than many of the others.

It also gives me strong "The Expanse" vibes. Probably because there are so many orbital bodies shown that were mentioned in those books. I also learned that Pallas is an actual asteroid.

Appreciate the comment! The Expanse and Paul McAuley's Quiet War series both get a lot of inspiration credit for this project. I tried to include every body that has some "brand recognition", whether from fiction or from real spacecraft missions. There are actually quite a few asteroids and comets that have been visited in real life — NASA, ESA, and JAXA have been doing amazing things in the Asteroid Belt over the past few decades.
Seconded, the whole design seems like something straight out of the books. And it also feels like it's just waiting for other solar systems to be included there…
I love that you’re depicting the Solar System accurately and to scale. It’s always bothered me that planetary orbits are often shown as equally-spaced concentric circles.

The Voyager missions could be interesting to include as you consider adding to your atlas.

wow, this is amazing. Learned quite a bit just by looking at the orbits of various objects. Especially pluto. Didn't realize pluto had such an odd orbit relative to the ecliptic plane of the other planets and planetoids. I'm assuming that's due to Neptune?
Not only tilted, but far less "round" than Neptune's orbit, which occasionally results in Pluto being actually closer to the Sun than Neptune (every 500 or so years). They also kinda "dance" with each other around the Sun in a 2:3 ratio (2 x Pluto's year / 3 = Neptune's year).
Did you use any libraries to help render the canvas? Or is the code built up from plain JavaScript and DOM APIs?
Three.js for all of the fun 3D stuff, vanilla canvas drawing for annotations like dots/labels/offscreen indicators. Three.js is an incredible project.
You forgot to add planet X

/s

"Dwarf Planet" is probably a good compromise given the ongoing controversy of Pluto's status and most appropriate label.
stunningly smooth execution!

options for details, say first or second order lagrangian wells, interplanetary transport network, object launched from some planet on some trajectory, in whatever natural order of easy to hard feels right, almost like KML options on regular maps

Great. I really like this.

What about doing something similar for the neighborhood of our solar system? E.g. all stars within 25 or so light years.