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
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.
Seconded. Also, please make the non-planet labels brighter. The contrast isn't good enough to read it.
... 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.
After 90s of playing I came back to add the same comment :)
Wonderful! I showed my kids (9 and 10) and we really enjoyed zooming in and out, reading about different Celistial bodie. We were all really intrigued about the "Trans-Neptuinan Objects" and the strange orbits.
We spent a whole 30 minutes afterwards talking about the existence of aliens and how long it would take to reach Alpha Centauri at our current level of technology versus light speed, and the further unpacking faster than light travel depicted in science fiction.
Thank you!
Thank you for sharing this with your family and for maybe increasing the number of space nerds on this planet! Exactly what I was hoping for with this project.
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.
Where is the ring gate?
A 'fictional' toggle, with items and locations from movies and TV would be cool.
It works seamless in mobile, that's just mind-blowing!
Curious to know, - Is the Source code open source? - If not what is the stack you used to build this.
Yep, all open source: https://github.com/gordonhart/atlasof.space
It's a static React app using Three.js for rendering and a few backend functions deployed on Netlify. It's been a pretty great experience deploying to Netlify, though I didn't expect the attention from HN to go way over my 100GB of free tier bandwidth!
It doesn't seem it is showing the tilt for Earth correct. When I zoom in for around now, the North Pole is in full sun rather than mid Winter. (I'm in Australia so I don't know if it is somehow using my local timezone wrongly)
Hey, thanks for flagging this. I had the sign flipped for Earth's axial tilt. Fixed now!
The project is amazing, thanks and congrats.
A bit of an off-topic comment, I can't cease to be amazed by the quality of HTML apps we can build these days. I remember the days when rendering too many rows on a table could completely break the browser.
Thank you and not off topic at all, I was thinking this the whole time I was working on this project. The modern browser is magic.
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.
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.
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.
Along the bottom toolbar there’s a “Reset” button (circular icon with an arrow) that recenters the UI.
This is great. It's interesting how two very remote dwarf planets with widely different orbits are so close to each other right now (90377 Sedna and 2012 VP133).
EDIT: On further thought, I noticed another kind sorta nearby. I wonder if this is just a matter of looking for them in that area and that there could be a lot more that are undiscovered?
Your edit is spot on — there's a lot out there in the Kuiper Belt / Oort Cloud that we don't know about. It's hypothesized that there are many objects out there, with more mass than in the Asteroid Belt. It's no coincidence that the ones we know are all near their perihelion currently.
space question -- why are the three outer-most bodies as consistent in general direction as they are? it looks like something blasted us (our solar system) in a specific direction. (speaking of, is there some astronomical/solar system analog for cardinal directions? like how would I say, "looks like we've been blasted in a north-east direction"
There's a lot more out there that we just haven't seen, probably in all directions. Hard to spot stuff that far out from the sun.
The analog for cardinal directions is the direction of Vernal Equinox — the line in the ecliptic plane (Earth's orbit) formed from the Earth to the Sun at the March equinox. (there's an indicator for this in the corner of the app). This is usually treated as +x, with rotations within the ecliptic given relative to this axis. Then there's ecliptic north and ecliptic south that define +z and -z as the normal vector to the ecliptic plane.
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.
Please add the ability to make time go backwards in addition to forwards!
Also, when you click on the stop button (should probably be a pause icon), the icon should change to a play button.
Final feature request: relativistic mechanics pls.
I recently learned that from a distance moon looks like revolving around sun rather than earth. It's orbit does not mak e loops/spirals. Instead it's more like a dodecahedron. Or if seen in isolation around sun, it will look like normal circular orbit.
Can you add an option to switch drawing orbit of moon around the sun of its planet instead of its orbit around its planet?
I always see these videos [1] about helical movement of the bodies, which intuitively make more sense to me rather than assuming that the Sun itself is static and the bodies moving in a static circle around it. Is that really true?
The visual design details make it feel like the navigation system of Elite Dangerous! Well done!
A sound effect would be nice. Just an idea.
Please add ability to click on the orbit path. Others have suggested clicking on label, but even after adding that ability, the labels can be hidden.
It's great but especially on mobile it's very difficult to center the view on a planet, zoom on it and follow it around the sun. On a desktop I eventually manage to click on it, then zoom and it stays in the center of the screen.
Fantastic! Will we venture beyond the solar system in the future, encompassing more astronomical objects? If so, that would be wonderful.
Super cool! Like a simpler (not in a bad way) Universe Sandbox.
I'm reminded of the astronomical-visualization app I created at the beginning of my career and abandoned. This makes me want to go back to it again!
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.
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.
This is awesome. I went looking for FarFarOut ( https://en.wikipedia.org/wiki/2018_AG37 ), maybe would be cool to add it?
Great suggestion, just added it. Thanks for teaching me about FarFarOut.
This is so cool! Is the codebase available for poking around (no worries if not!)
Now if only there was an option to export an SVG to à la https://github.com/samyk :p
Fantastic project!
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.
Really nice - tested on mobile and desktop.
Nice touches:
- Motion from the running clock
- Knowing where the planets are on a given date
Wish list:
- Scroll through time
- Hide non-planets, esp. to see inclinations of the planets
- Display the orbital center
- Reframe as Atlas of Home
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!
#til that there is an object in (or near, I guess) our solar system called “FarFarOut”.
Celestia might also give you some ideas:
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
The one problem though that destroys all of this is that there is no curvature on earth: https://youtu.be/VLGBW6ouvl8?si=VLd5z2axJEyjkovH
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.
This is amazing!
One option for the future: orbits of celestial bodies influence each other. Is it enough to see when say, earth and mars get close?
Not really no.
It is true that we don't actually orbit the centre of the Sun, but it is very close.
The problem with Mars getting close is that Mars is quite small and the Earth is a long way away and there are many other planets, some much more massive.
Mercury is actualy lot closer a lot more often (Mercury is the most-often close to all the planets by virtue of it's orbit close to the Sun).
Someone explains it in a bit more detail here: https://www.quora.com/How-do-the-surrounding-planets-influen...
There's a paper suggesting there's some 2.4 million year climate cycle https://www.nature.com/articles/s41467-024-46171-5 but that's too subtle for this visualisation.
This is crazy good! Thanks for building it...
Incredible to see the speed at which some of the bodies are moving ... Especially Bennu...
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.
Nice project! Is it possible to go backwards in time?
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).
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
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!
Is there a way to lock the screen in order to be able to scroll around on mobile?
Came to ask the same thing.
Why is the sun called Sol? And not Sun? I thought Sol was a sci-fi thing?
Wikipedia lists Sol as one of the names for our star.
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.
Sol is the Roman sun god and the latin for 'sun' so is sometimes used.
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.
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.
An alternative (like arrow keys) would be great, as I don't think I can right-click-drag with my touchpad.
Awesome I like these 3D infinite canvas things
Is there a way to show only spacecrafts? I am having a hard time finding any
There aren't any - it's just natural stellar bodies.
There's one at least. But you have to click on the toggle visibility button at the bottom of screen, then switch on spacecrafts. Then it will show you at least one - the Tesla Roadster launched in 2018.
Nice find. That's the only one up there currently, mostly because it's in a simple heliocentric orbit (most spacecraft are not). I want to add more but need to figure out how to properly find their current position+velocity to start the physical simulation.
I think you should switch on the spacecrafts toggle by default. It's pretty cool seeing at least the roadster in there!
incredibly cool omfg
Awesome project!
I get "secure connection failed".
oh shit Bennu. :)
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.