Summer of Code in Space 2011
Ideas for the SOCIS 2011 (ESA Summer of Code in Space)
All of these tasks require knowledge of C/C++, as Stellarium is written in it, and some knowledge of the Qt framework (or willingness to learn the basics very quickly), because Stellarium relies heavily on it, especially for its GUI.
Display collections of multi-resolution sky surveys
Work has already started on this project and we have a working initial code displaying images encoded in the TOAST format. The image data for each sky survey needs to be pre-processed and stored on a server. We currently have a server hosted by the Free Software Fundation France with a potentially high bandwith for serving the (huge amount of) data.
Meteor shower calendar
- See Proposals:Realistic meteor showers, Launchpad Blueprint: https://blueprints.launchpad.net/stellarium/+spec/realistic-meteor-showers
At the moment, Stellarium can show meteors, but they are simply decorative - they appear at random points at a rate set by the user. The existing code of the MeteorMgr class can be used as a base for a plug-in that shows more or less scientifically accurate meteor showers. They are not random - the meteors appear to "stream" from a single point in the celestial sphere, the radiant.
This feature can take several forms:
- Weak form: Allows the user to define a meteor shower and/or pick it from a list, and then to turn it on and off on a whim.
- Strong form: Keeps a meteor shower catalogue in JSON format as with the other kinds of objects tracked by Stellarium, and shows only what should be in the sky for the given date. The catalogue should contain information about the radiant and the annual changes in the zenith hourly rate (as meteor showers typically have a peak and are active some time before and after that; a normal distribution function can do).
- Very strong form: Use a professional model for predicting meteor showers, based on the orbits of the clouds of space particles that cause them.
The implementation should allow the user to toggle a marker showing the radiant.
Improve the planet rendering
- See Launchpad Blueprints https://blueprints.launchpad.net/stellarium/+spec/improved-planet-rendering and https://blueprints.launchpad.net/stellarium/+spec/realistic-atmospheric-phenomenas
The current rendering is very basic: planets are ellipsoids mapped with a rectangular texture, lightning is very basic (material parameters are the same for each planets), no shadow or bump mapping is performed, no atmosphere is rendered when a planet is seen from outside its atmosphere.
The goal is to improve the code related to 3D rendering so that the level of realism is improved. Main features would be:
- Allow for 3D models, not only ellipsoids. This will allow proper rendering of non spherical asteroids, artificial satellites.
- Improve lightning openGL parameters (material, etc..).
- Allow for satellites/rings shadow on the mother planet.
- Atmosphere rendering, at least for Earth and Mars.
- Rendering of atmospheric phenomenon: clouds, noctilucent clouds, zodiacal light, auroras.
- Improve texturing with e.g. bump mapping.
During the last refactoring the code where all these operations appear was grouped in a single place, thus making coding easier. The main method to modify is Planet::draw3dModel(...)
Skills needed: C++, OpenGL, Geometry, Basic Astronomy.
Difficulty: from average to difficult depending on the subtask.
Realistic comet rendering
- See Proposals:Realistic comet rendering, Launchpad Blueprint: https://blueprints.launchpad.net/stellarium/+spec/realistic-comet-rendering
At the moment, Stellarium supports comets as solar system bodies, but displays them as star-like objects. More realistic and more scientifically accurate rendering of a comet requires the rendering of four elements - a core, a coma and two tails, oriented according to the comet's relative position to the Sun and its direction. The tails and the coma should appear only when the comet is close enough to the Sun. (See the Wikipedia article on comets for more information.)
As not all comets are identical, this feature should allow comet customization. The visual characteristics of comets should be stored along with their orbital elements.
Skills needed: C++, OpenGL, some mathematics and astronomy.
Update the current DSO catalog
- See Launchpad Blueprints https://blueprints.launchpad.net/stellarium/+spec/new-ngc-catalog and https://blueprints.launchpad.net/stellarium/+spec/messier-caldwell
The NGC catalog used in Stellarium currently has many mistakes. Fabien had the very kind permission from Wolfgang Steinicke to use his updated NGC and IC catalogs available from his web site: http://www.klima-luft.de/steinicke/ngcic/rev2000/Explan.htm
His catalog provide more accurate positions, merge doublons etc..
He also provide more information on the type of the nebula. This info could be used to use icons matching the type of nebula, and also to draw ellipses for galaxies.
The code change should be located in modules/NebulaMgr.hpp/cpp and modules/Nebula.hpp/cpp
A lot of amateur astronomers set out to track down all of the Messier and Caldwell objects. It would, therefore, be very handy if Stellarium could highlight these objects. Envisage an option which would make all M (or C, or NGC, or Herschel) objects visible at all zoom levels and distinguish then from other DSOs by making their symbols a different colour and (optionally) labelling them by their catalog number.
Skills needed: C++, Basic astronomy knowledge