Straight Away to Orion

“Don’t Panic”

The Official J’s Map for the Galaxy Companion

This map is a product from J. It is an practical tool for serious galaxy travellers. Whenever you find yourself in a location that doesn’t match whatever we have in our map, we would appreciate it that you could issue a formal report to us if you ever make it back to earth, which we highly doubt.
Bon Voyage



Data source

All data in this project comes from The Open Exoplanet Catalogue.
All data comes from their github repo.
In my projects, I picked 48 stellar system to build their CAVE view and small multiples. For other remaining system, I just render them as a background in my application.
The criterion of filtering stellar system is the total number of planets reside within. Both binary and trinary system has been excluded.
The data expected from their repos are:

1. Stellar:

right ascension

2. Star:

for star missing radius, we use its mass to calculate it assuming it has a similar density like our Sun.
for star missing spectral type. we use its temperature to classify it. Other wise we just assume it to be G star since it is the most prevalent star in our galaxy.

3. Planets:

for planets missing radois. we use its mass to calculate it assuming it has a similar density like the Earth
for planets missing period, we just assign an random value to it according to its distance to its star in order to make sure that outer planes has a lower period.
for planets eccentricity, we’ll just assume its orbit is a perfect circle. Which basically says the default value for this would be 0.0. The same assumption applied to the 3 following attribute
default value 0.0
default value 0.0
ascending node: 
default value 0.0
possible discovery method for exoplanets are: RV, transit, imaging, timing. And it is supposed to be empty for planets in Solar System
rotation: i
n fact there is no rotation period (days) for exoplanets. I manually added it from other wiki just to make our solar system looks better. And I also added a random rotation period to make it more visually realistic.
samething random numbers


Orbit calculation:
For the orbit calculation, I’m calculating the coordinates of the elipse in a polar coordinates.
1. Star of a given system is placed on the focus of each elipse orbit.
2. Calculate each points on elipse given the semi-major axis, eccentricity and angle theta (in polar coordinates):
3. Apply the argument of perihelion, then the inclination and finally the longitude of ascending node

Stellar Position
Calculating the coordinate in Cartesian coordinate system of each stellar system we need its distance to our Sun, right ascending angle and declination. We use our solar system as the origin in the system we built here.
Stellar Classification & Habitable Zone
The stellar classification used is Harvard Spectral Classification. The calculation of the habitable zone is also based on the classification and a simple 1-to-1 projection.

Cave View

System in cave consists of the star, the planetary system, the transparent ring of habitable zone and the orbit.
For the background of the system, I used a full stellar stars in the space instead of Skybox. It rotates along the origin of the current system in CAVE and looks really cool.
It looks like those small dots, but actually the scale changes along with the orbit scale.
The user can set the scale of radius, the scale of orbit and the scale of orbiting and rotating speed independently.
One thing to notice is: such scale remains consistent with the small multiples on the Wall.

Small Multiple

Small multiples shows:
1. The spectral type of a star via the background color;
2. The radius of a star via the width of the background;
3. The planets’ radius and semi-major axis of their orbits;
4. For exoplanets that goes beyond the width of the small multiples, I place them as a tiny dot at the right corner of each multiple
For the sake of consistency: The scale of small multiples remains consistent with the system in CAVE.

Galaxy View

For the galaxy view of all systems. I used the same shader for the galaxy background.
The only difference is, I did attach different color according to the star classification to make it easier to distinguish the systems of interest. And I also attach its name with it
For the sake of consistency: The scale of small multiples remains consistent with the system in CAVE.

Setting and Control

1. use the joysticker to rotate the camera.
2. use the arrow button to move forward/backward/up/down. (I don’t have move left of right here)
Switching system in CAVE:
use the wand to point to a small multiple. Hit button 5 to bring that system into CAVE
1. Change the Scale;
2. Bring up galaxy view;
3. Reset camera position;menu

Interesting Stuff

Shaders, Shaders, Shaders!!!~
In this program, I have intensively use shader to build it. Widgets that used shaders including:

1. Everything in small multiples
Each small multiples consists of two geometry:
Panel:A rectangle with two transparent color strip that shows the radius/spectral type of the star and habitable zone
Planets:A set of point primitive that gets moved according to the scale and stretched into a polygon.
2. Habitable zone in CAVE view
I use shader to draw a transparent ring area inside a rectangle.
3. Galaxy view
Each stellar system is a vertex. Then it gets stretched into a rectangle and rendered with a exponentially increasing alpha value.

There are one issue with the shaders in cave: The cluster structure seems to be an issue. I noticed that when running in CAVE. Some of my planets in small multiples are not rendered. Which never bothers me in my desktop
Each of my small multiples consists of two panels horizontally. In some cases the planetary system are small that vertices in its planetary geometry only resides in the left panel.
When adjusting the orbit scale, I move the vertex in vertex shader. And when I shift it so much that it actually should be rendered on the neighboring node, it just won’t render.
I feel like this is because of the way that omegaLib handled the rendering stream. That each cluster node only gets the vertices that are supposed to be rendered inside it. This might be a limitation to the capability of shaders in this case, if the assumption is valid

Source Code,Dependencies and Demonstration

GitHub Project Repo
OmegaLib Github Repo

Or do:
git clone

Youtube Video:

Running on Desktop
Running on CAVE2