Skip to content

A visual model of how sunlight is hitting the earth, along with the phase of the moon, and the position of the planets.

License

Notifications You must be signed in to change notification settings

infoseek12/Chronosphere

Repository files navigation

Summary

Chronosphere is an initial attempt to represent different kinds of information about the Earth and the solar system, at any given point in time. The visuals are intended to be informative rather than literally accurate while leaning towards reality when possible. For instance, the positions of the planets are correct but some of them have been brought closer to the sun to fit in the model.

Architecture

Chronosphere is built around a singleton object named chronoSphere. "Temporal widgets", like moon phases and solar system orbits, are modules attached to the chronoSphere object. The time selector and map of the Earth is not currently factored as an independent module. HTML scaffolding also has to be added manually at this point.

Code taken from various opensource projects are combined, and to varying degrees, refactored. Time calculations are done with the MomentJS Library using the present date and an offset to the time being displayed.

I believe it makes sense to keep all the widgets containerized and not to share dependencies (for things like astronomical calculations) as the additional code is minimal, doing so avoids race conditions, and it allows for more flexible configuration.

Known Inaccuracies

  • The timezone selector is sometimes off in some timezones, due to daylight savings time not being factored in yet.
  • The solar terminator is not sized correctly at all zoom levels, the gradient is off, and there are sometimes seams between the map tiles.
  • If the time is updated too rapidly the moon and planet calculations become skewed.
  • The size of the planets is not proportioned accurately, nor are their orbits. This inaccuracy is intentional: it is impossible to display the correct proportions on any reasonably available screen.

Build Steps

  1. Run "npm install" in shell to download the Node packages
  2. Run "npm run build" for a production build or "npm run dev" for a development build that will watch for changes

Pull Requests

The project is still at a very initial stage and pull requests are very welcome.

Todo

General

  • Write tests
  • Improve plugin system to better modulize temporal widgets. Develop layout systems to remove the need for HTML scaffolds.
  • Improve mobile suppport

Time management

  • Improve timezone selector

Satalite Map

  • Improve the accuracy of the solar terminator. At any zoom level, it should be a linear gradient 55 km wide.
  • Pansharpen night time raster and increase zoom level
  • Show eclipses

Additional Temporal Widgets

  • Solar weather (Note: use this source of data if avalible at selected time). Ideally the sun in the present orrery can be replaced with an image representing the solar weather at that time.
  • Time Magizine covers, see this tutorial
  • Significant events of the day from Wikipedia
  • Add constellations. This will require some sort of widget to choose the location the sky's seen from.
  • Stock market data
  • Marine and aviation traffic

Credits

NPM and WebPack Plugins:

autoprefixer,babel-core,babel-loader,babel-preset-env,file-loader,css-loader,mini-css-extract-plugin,node-sass,postcss-loader,sass-loader,style-loader,webfontloader,webpack,webpack-cli,Prettier

Released under the MIT License

About

A visual model of how sunlight is hitting the earth, along with the phase of the moon, and the position of the planets.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published