Inspiration
Stellarium, mechanical orrery.
What it does
Renders our solar system and its motion, as well as the positions of prominent stars (2,898 with an apparent magnitude < 5.5 from an original csv of over 87,000 stars) in the night sky.
How we built it
Unfortunately, there was more JavaScript than we ever would've wanted to maintain our sanity. We plan to refactor as much of the solar system movement as possible into the far easier, faster, and more reliable Julia used for stellar calculations.
Challenges we ran into
Using React and Three.js together (react-three-fiber seemed promising but major aspects were deprecated). Eventually, we dropped React, and then replaced Three.js with the far simpler renderer Zdog.
Accomplishments that we're proud of
We learned how to code in Julia and its HTTP library via Oxygen.jl to create APIs. In Julia, we also manipulated CSVs and DataFrames to create Star struct objects to be deserialized into JSONs with a POST request.
We got an Ubuntu 22.04 LTS virtual machine on Google Cloud set up with the promotional credits to host our website at https://stellarly.tech via DNS zones and nginx web server.
What we learned
We learned a lot about astrophysics and the math of calculating the coordinates of stars given their right ascension and declination values.
3D modeling in the website is very challenging in terms of programming because there are only a few libraries we can use, and deprecated/unmaintained code always messes things up. It is also very tedious because we would need to set up the size of each star and position it very precisely. The math takes a lot of studying, but the amount of work is brief, while the visualization and front end take a lot of time because we have to be very meticulous to get everything set up.
What's next for Stellar
Adding perspectives from earth (so that you can see what a night sky may look like on a given day, at a given time and location- with a horizon), constellations- likely as hardcoded paths in the zdog renderer., and more precise movement of satellites. Once this is all being run in Julia, vector math could allow us to actually simulate all these motions rather than emulate them.
We can also add information blobs for each star that the user hovers over. All the data for each star are available from universities and NASA, so we can always scrape data from them and make them available in the backend so that the user can see them when hovering over each star.
Built With
- google-cloud
- http.jl
- julia
- oxygen.jl
- react
- three.js
- zdog.js
Log in or sign up for Devpost to join the conversation.