(Note: in all of these images, 0° galactic longitude is at the top, the Sun is at the centre, and the radius of the data is about 800 parsecs.)
Visualising isosurfaces is hard. They fit inside each other like very complex Russian dolls but no technique for showing several isosurfaces at once works perfectly.
A common technique is to make one isosurface partially transparent so you can see one inside the other, as is done in the image at the top of this article (which also includes the local dust clouds in orange and a yellow dot representing the location of the Sun). However, this only works for two or three surfaces and is difficult for the larger less-dense TGAS isosurfaces because of the complex sponge-like structure of the solar neighbourhood.
(The dust clouds in the above image are derived from data presented in this paper:
Lallement, R., Vergely, J. L., Valette, B., Puspitarini, L., Eyer, L., & Casagrande, L. (2014). 3D maps of the local ISM from inversion of individual color excess measurements. Astronomy & Astrophysics, 561, A91.)
Perhaps the simplest isosurface visualisation technique is an animation in which the larger isosurfaces evaporate to reveal the ones inside.
The following Youtube video was created using the hot star density isosurfaces I described in a previous blog post:
(The best view is 4K full screen.)
The lower density surfaces clearly reveal a crater-like structure in the third quadrant. This is caused by missing TGAS data in this quadrant and is not a real structure.
The animation is interesting, however a traditional map requires a still image or at least something that can be labelled.
Another option is to overlay several isosurfaces on top of each other. This obscures the three dimensional structure but at least shows how one surface fits inside the other.
For example, this image shows the isosurfaces for which the star density is greater than or equal to d%, where d is 5, 55, 80 and 90:
The highest 80% and 90% concentrations in this image and the one at the top of this post represent dense hot star concentrations, including OB associations.
You can see the three stellar "continents" of the solar neighbourhood in this image and the one created using three of these isosurfaces at the top of this blog post.
Here's another experiment, this time combining dust and the 60% and 85% isosurfaces:
A successful 3D map of the solar neighbourhood will likely require a combination of these techniques as viewed from several directions.
I hope in my next blog post to present the first draft of a real map of the solar neighbourhood with star clusters, dust clouds, hot star concentrations and labels. Given the limitations of the TGAS data, this first draft will inevitably be incomplete, but it will prepare the way for a more complete map when Gaia DR2 is released about a year from now.
The map will take a while to put together, so look for it early in the new year!
In my last blog post, I introduced Panurania, the stellar "supercontinent" that contains most of the high temperature stars in the solar neighbourhood. The above image is an isosurface of a temperature density function (25% of the maximum) derived from the hot stars (colour index < 0) in the Tycho-Gaia Astrometric Solution (TGAS) data set from Gaia DR1.
Clicking on the above image (which has galactic longitude 0° at the top) will bring you to a much more detailed zoomable graphic with a distance and galactic longitude display. Our sun is located at the centre of the image, well inside the Panurania structure.
(As always, it is important to keep in mind that I am using the limited TGAS data set, which starts to fade out about 600 pc from the Sun and has significant gaps even within that distance. Gaia DR2, expected about a year from now, should have more detailed data extending to a much larger distance. I'll be preparing revised maps when that becomes available.)
The most prominent feature in Panurania is a crater-like structure at the lower right. You can see an animation of Panurania showing the camera moving from above to below this region in this Youtube video:
(This video is displayed at only 2 frames per second - I'll upload a smoother animation when I get more rendering time.)
Although it is exciting to think that this might be a real structure, in fact it is known that TGAS is missing a lot of data from the upper third quadrant and this is likely a void in the data rather than a vast crater in the interstellar medium.
The overall shape of Panurania, with its branches and ridges, is strikingly similar to a Red Ridge sponge (one species of which I believe is the Caribbean reef sponge Axinella corrugata).
That is worth repeating:
We are all living inside a gigantic sponge.
I'll be asking some astrophysicists about why Panurania resembles a sponge. One possible explanation is the way hot stars form out of collapsing filaments inside giant molecular clouds. See, for example, this recent blog post from Nick Wright.
Of course the image at the top of this blog post is not a full map. A full map would need labels and many overlays (prominent star clusters, dust clouds, supernova remnants, and so on).
That will evolve on this site over time. In my next blog post, I'll look at the three denser stellar continents that lie within Panurania.
In my last blog post, I showed 3D slices of a TGAS density function that reveal the concentrations of high temperature stars. There is a very clever algorithm called the marching cubes algorithm that can take such 3D slices and convert them into 3D surface meshes that can be rendered in a 3D graphics program. In my case I used the vtkSliceCubes function in a Python port of the amazing VTK graphics library to generate the meshes and then rendered the resulting meshes in the Blender 3D program.
I'll be presenting some of these Blender images over the next few blog posts.
It is important to keep in mind that TGAS is missing many stars (especially high temperature stars) in the solar neighbourhood and the maps we generate using it will inevitably be incomplete. We can look forward to more complete maps a year from now with the release of Gaia DR2.
The marching cubes algorithm takes a function f on 3D points and a number v and generates isosurfaces that consist of all points (x,y,z) where f(z,y,z) >= v.
The isosurface typically consists of a number of disconnected pieces.
The value v ranges between a minimum value (usually 0) and a maximum value. At the minimum value, there is always one isosurface piece that contains all the points.
As the value v increases, the isosurface typically fragments into more and smaller pieces, until v reaches its maximum value when the isosurface may be empty or consists of a few small pieces around points that take on the maximum value.
The TGAS isosurfaces follow a similar pattern with the density function that I described in my previous blog posts, but what is interesting is what happens to the isosurface when v ranges between its maximum and minimum value.
Here is a table showing information about the isosurfaces as the TGAS temperature density v ranges between 5% and 95% of its maximum value.
regions with 90% stars
stars in 90% regions
The first column is the density value used to generate the isosurfaces. The second column is the number of high temperature stars inside the isosurface. The third column is the percentage of high temperature stars that are inside the isosurface compared to all TGAS high temperature stars. There are 20263 hot stars (color index <= 0) in TGAS with error ratios less than 0.2. So, for example, 95.27% of these 20623 stars are inside the isosurface where the density is greater than or equal to 5%.
The fourth column is the number of isosurface pieces that contain 90% of the isosurface stars.
It is not surprising that almost all the stars are within the 5% isosurface. What is more interesting is what happens as the density value goes up. Even when we reach 35% density, 45.72% of all the hot TGAS stars are still within the isosurface, and more than 90% of these are still within one giant stellar "supercontinent".
After 35%, the supercontinent breaks into three smaller stellar continents. The three continents are also persistent and only start to break up at 60% density, when the isosurfaces start to fragment into regions of dense hot star concentrations including well known local OB associations such as Ori OB1 and Sco OB2.
Since the stellar supercontinent and three denser continents contained within it are so persistent, this suggests that they are real structures and not just artifacts of the density function.
Earth once had a supercontinent that contained most of its land, called Pangaea. It seems inevitable therefore to call the stellar supercontinent Panurania, after both the goddess Gaea's husband Ouranos/Uranus, the god of the sky, and his great granddaughter Urania, the muse of astronomy.
We'll look at Panurania in more detail in the next blog post, but here is a teaser image of the 25% density isosurface rendered in Blender.
You can see that it has a very distinctive shape. We'll look at some possible reasons in the next blog post.
It is important to keep in mind that I'll really be using the temperature density function T(x,y,z) I mentioned in my last blog post to map the TGAS data, which is not quite the same thing as the stars in the solar neighbourhood.
TGAS looks a little like a donut with a 600 pc radius, a hole around the Sun, and a few large bites taken out of it. It has missing data. I'll discuss this missing data in more detail in a future post. For now, I'll take TGAS as it is.
We can construct a preliminary version of T(x,y,z) quite simply. For any point (x,y,z), round off the values to the integer point (i,j,k). Select all the TGAS stars in the one parsec cube centred on (i,j,k) with err/parallax < 0.2 and the colour index Ci < c where c is some value that appropriately selects hot stars. In my experiments below, I'll look at c = 0.0 and c = 0.1.
Then convert the Ci value for each star to temperature (I did that by interpolating Eric Mamajek's very useful table here). Add up all the temperatures for the stars in the cube. That is T(x,y,z). If there are no stars in the cube, set T(x,y,z) to zero.
This is a temperature density function of sorts but for our purposes it is not a very useful one. For mapping and presentation purposes we need a relatively smooth function that ranges between 0 and 1. What I have defined so far is a very discontinuous and spiky function. Fortunately there are some very common techniques that we can use to tame our function.
The first step is to de-spike the function. In astronomy, a common practice is to apply a de-spiking function to data to reduce it to a more manageable range. De-spiking functions commonly used are sqrt, ln or arcsinh. In my experiments with the TGAS data, I found a fourth root sqrt(sqrt(x)) works very well.
The second step is to smooth the function out over 3-dimensional space. A convenient way to do this is to apply a gaussian normal function. This is in effect a weighted average where the weight gets smaller the farther you are from the point. 2d gaussian smoothing is commonly used to reduce unwanted detail in photographs. 3D gaussian smoothing is similar except that it takes place in all three dimensions. The amount of smoothing is defined by the standard deviation σ (sigma). In the experiments below I look at σ values of 10 and 15 parsecs.
The final step is to clamp the values of the function between 0 and 1. One common clamp function is to just test to see if a value is > 1 and if it is, set it to 1. However, this introduces an ugly discontinuity into our function and we want something smoother. Another option is to find the largest value in our data set and divide all the other values by it. Although this does clamp the function in a continuous way, in many data sets, even after de-spiking, the maximum value can be large and this might create a function with a poor spread in values where only a few values are close to 1 and most other values are close to 0.
At this point I'd like to introduce one of my favourite tools for image processing, the sigmoid function. There are several variations of this, but the one I will use is:
f(x) = 2/(1+exp(-s*x)) - 1
where s is a constant called a spread.
This function uses the constant s to spread the values over a reasonable range and then the function guarantees that the values are smoothly clamped between 0 and 1.
De-spiking, smoothing and clamping are common image processing techniques that work just as well for 3D data sets. In this case, the range of possible temperature density functions is determined by the constants c, σ and s. Getting these constants right is important. Selecting the wrong c might exclude important hot stars or alternatively contaminate the data by introducing cooler stars that have drifted far from their origins. Selecting the wrong σ might remove important details from the data or alternatively fragment the data into too many small regions. Selecting the wrong s spread value might squeeze most of the data into too small a range.
It turns out that it was not that difficult to select reasonable spread values. The other values were more difficult so I tried some experiments with c = 0.0 and 0.1 and σ = 10 and 15.
The results for the galactic plane are below (0° galactic longitude is at the top of the images):
After looking at the various options (including animating full versions of the 3D dataset for all four parameter options) , I chose c = 0.0 and σ = 15. A larger version for the galactic plane using those values is at the top of this blog post.
You can journey through the full TGAS cube using this temperature density function in the animation here:
(best at 4K full screen or at least full screen).
There is a lot to see in this animation but a commentary will have to wait for a future blog post.