3-D Starmaps

Now, say that you've decided that the aliens featured in your next SF novel reside on the third planet of Tau Ceti. What is their night sky like? If you really want to know, I can give you the basics. But it ain't gonna be easy. And you are going to have to make the alien constellations by yourself! ( Amusing note: the aborigines of Austrailia had such a riot of stars in their clear night sky that their constellations are formed by the dark starless areas of the sky, instead of by the stars!)

Software

If you don't want to do all the work, check out John Whatmough's Extrasolar Skies web site. It will generate a sky map from any star in the Hipparcos Star Catalog.

Sky maps and more can be found at the marvelous 3-D Universe web site. This site goes into some detail about how the maps are made.

By the way, a gentleman named Roger Wilcox told me that there exists a freeware program for MS-DOS called PCSPACE which can show the night sky from any point within a few thousand light years from earth, with or without constellation lines. It also allows one to include your own database of stars. Download the version that ends in an "E", the version that ends in an "F" is in French.

There is a shareware program called CircumSpace that will sort of show the night sky from various locations.

Example

First off, please note that I have not exhaustively tested the following equations, you must use them at your own risk. If you find a mistake, please drop me an email!

Late news, Alessandro Fabbri did indeed find mistakes, the equations below have been corrected as per his specifications.

Step 1: Select Stars

Make a list of the stars to create your skymap from. Please note that most of the stars in the Gliese data are so dim that they are not visible to the naked eye. It would be a good idea to remove from your list all stars below a certain luminosity. I'll update this when I discover what that luminosity is.

Step 2: Co-ordinate transform

Now you will have to do a "co-ordinate transform". Don't panic, it isn't hard, just tedious. What you have to do is take each star in the list in turn, and subtract from it's co-ords the co-ords of the "origin" star (that is, the star the skymap will be for).

What you are doing is taking a list of stars with Sol centered co-ordinates, and creating a list of stars with origin star centered co-ordinates. That is, the first list has Sol at 0,0,0; while the second has the origin star at 0,0,0.

Example

If you are making a skymap of Tau Ceti, it's origin co-ords are 3.13, 1.49, -1.01. Say the next star to transform in your list is 36 Ophiuchi, at Sol co-ordinates -1.01, -4.76, -2.43. (Note: Thanks to Jim Smith, who spotted an error in the example.)

  • NEWX = OLDX - ORIGINX
  • NEWY = OLDY - ORIGINY
  • NEWZ = OLDZ - ORIGINZ
  • NEWX = (-1.01) - 3.13
  • NEWY = (-4.76) - 1.49
  • NEWZ = (-2.43) - (-1.01)
  • NEWX = -4.14
  • NEWY = -6.25
  • NEWZ = -1.42

36 Ophiuchi's new co-ords are -4.14, -6.25, -1.42. Note that Tau Ceti is now at 0,0,0.

Step 3: Right Ascension and Declination

Now, we take the transformed list, and convert them back into Right Ascension and Declination.

Pseudocode
if (NEWX = 0) and (NEWY > 0) then PHI = +90
if (NEWX = 0) and (NEWY <= 0) then PHI = -90
if (NEWX > 0) and (NEWY > 0) then PHI = ATAN( NEWY / NEWX )
if (NEWX > 0) and (NEWY <= 0) then PHI = ATAN( NEWY / NEWX )+360
if (NEWX < 0) then PHI = ATAN( NEWY / NEWX ) +180

if (Z = 0) then THETA = 0
if (Z <> 0) then
	if (NEWX <>0) and (NEWY <>0) then
		THETA = ATAN( NEWZ / SQRT( NEWX^2 + NEWY^2) )
	else
		THETA = +90 * SIGN(Z)
	end if
end if

RHO = SQRT( NEWX^2 + NEWY^2 + NEWZ^2 )

where:

  • (X<>0) means "if x does not equal 0"
  • ATAN(x) means "take the ArcTangent of x"
  • SQRT(x) means "take the square root of x"
  • SIGN(x) is +1 if x is positive and -1 if x is negative
  • (x)^2 means "square x"

If your computer language does not have an ATAN function, try to find a good book on computer algorithms. Also, you might be able to streamline the calculations if your computer language includes the ATAN2 function, which takes into account the quadrant the angle is in.

And don't forget that most computer programming languages want angles given in radians, not degrees, so you'll have to convert them (you don't have to do this if you are using a pocket calculator). Multiply degrees by 0.0174532925 to get radians. And in the above equations, replace "+90" with "+1.57079628", replace "-90" with "-1.57079628", replace "+360" with "+6.28318512" and replace "+180" with "+3.14159256".

When done calculating with radians, convert to decimal degrees by dividing by 0.0174532925. Why do computer languages use radians? Dunno, but I suppose it is easier to implement accurate trigometric functions if radians are used. And programmers are notorious for making their own jobs easier at the expense of the hapless users.

Late note: Erik Max Francis explained the reasoning behind using radians.

Why Radians?

It's because radians are the only "natural" unit for calculating degrees in; they're defined in a dimensionless way such that an angle of 1 rad is such that the arc along the central angle is the same as the radius of the circle. When you're dealing with equations where the angles are all bound up in trigonometric functions (e.g., only appear as sin theta, etc.), then it doesn't matter mathematically, but if you have situations where they can creep out of the trigonometric functions (which you often find in calculus), then you absolutely must use radians or you will find the wrong answer.

Erik Max Francis
Example

36 Ophiuchi's is at Tau Ceti co-ords of -4.14, -6.25, -1.42.

  • PHI = ATAN( NEWY / NEWX )+180
  • PHI = ATAN( NEWY / NEWX )+3.14159256 assume radians
  • PHI = ATAN( -6.25 / -4.14 )+3.14159256
  • PHI = ATAN(1.5097)+3.14159256
  • PHI = 0.985765027+3.14159256
  • PHI = 4.127357681 radians
  • PHI = 4.127357681 / 0.0174532925 convert to degrees
  • PHI = 236.480 degrees
  • THETA = ATAN( NEWZ / SQRT( NEWX^2 + NEWY^2) )
  • THETA = ATAN( -1.42 / SQRT( -4.14^2 + -6.25^2) )
  • THETA = ATAN( -1.42 / SQRT( 17.1396 + 39.0625) )
  • THETA = ATAN( -1.42 / SQRT( 56.2021) )
  • THETA = ATAN( -1.42 / 7.49668 )
  • THETA = ATAN( -0.189 )
  • THETA = -0.186796612 radians
  • THETA = -0.186796612 / 0.0174532925 convert to degrees
  • THETA = -10.703 degrees
  • RHO = SQRT( NEWX^2 + NEWY^2 + NEWZ^2 )
  • RHO = SQRT( -4.14^2 + -6.25^2 + -1.42^2 )
  • RHO = SQRT( 17.1396 + 39.0625 + 2.0164 )
  • RHO = SQRT( 58.2185 )
  • RHO = 7.630 parsecs (since the original x,y,z were in parsecs)

Convert the star's PHI, THETA, and RHO to Right Ascension and Declination thusly:

  • RAhours = INT( PHI/15 )
  • remainder = PHI - (RAhours * 15)
  • RAminutes = INT( remainder / 0.25 )
  • remainder = remainder - ( RAminutes * 0.25 )
  • RAseconds = INT ( remainder / 0.004166 )
  • DECdegrees = INT( THETA )
  • remainder = THETA - ABS(DECdegrees)
  • DECminutes = INT( remainder * 60 )
  • remainder = remainder - ( DECminutes / 60 )
  • DECseconds = INT( remainder * 3600 )
  • Distance = RHO

where:

  • INT(X) means to return the integer part of X (remove the part after the decimal point).

36 Ophiuchi's RA and Dec from Tau Ceti are RA 15h45m53s, Dec -10°42'11", and the distance from 36 Ophiuchi and Tau Ceti is 7.630 parsecs. Parsecs since the original X,Y,Z Sol centered co-ords were in parsecs.

Step 4: Remove Dim Stars

At this point, you should filter the list, removing all stars who have an apparent magnitude too dim to be seen from the origin star. For human vision, this means all stars with apparent magnitudes above 6. Yes, above. The larger the apparent magnitude, the dimmer the star. Celestial objects like the moon actually have negative numbers for their apparent magnitudes.

First determine the star's Absolute Magnitude (which is the apparent magnitude it would have at the standard distance of 10 parsecs). If you are lucky, that information will be already in the star data you are working with (it is included in the Gliese data). If you are unlucky, you will have to calculate it from the apparent magnitude and the star's distance from Sol. If you don't have those values either, you need a better set of star data. The following equation is based on the so-called Distance Modulus, well known in astronomical circles.

  • AbsMag = AppMagSol - (5 * Log( DistFromSolPC / 10 ) )

where:

  • Log(x) means to take the common logarithm of x. This is the key on your calculator marked "Log", not the one labeled "1n"! DistFromSolPC is the distance of the star from Sol in parsecs.
Example

36 Ophiuchi is 17.7 light years from Sol, which is 5.43 parsecs, and it's apparent magnitude as viewed from Sol is 5.07.

  • AbsMag = AppMagSol - (5 * Log( DistFromSolPC / 10 ) )
  • AbsMag = 5.07 - (5 * Log( 5.43/ 10 ) )
  • AbsMag = 5.07 - (5 * Log( 0.543) )
  • AbsMag = 5.07 - (5 * (-0.265))
  • AbsMag = 5.07 - (-1.326)
  • AbsMag = 6.39

And now we can calculate the apparent magnitude of the star as viewed from our origin star:

  • AppMagOrigin = (5 * Log( DistFromOriginPC / 10 ) ) + AbsMag
Example

36 Ophiuchi is 7.630 parsecs from the origin star Tau Ceti, and it's absolute magnitude is 6.39.

  • AppMagOrigin = (5 * Log( DistFromOriginPC / 10 ) ) + AbsMag
  • AppMagOrigin = (5 * Log( 7.630 / 10 ) ) + 6.39
  • AppMagOrigin = (5 * Log( 0.763 ) ) + 6.39
  • AppMagOrigin = (5 * ( -0.1175 ) ) + 6.39
  • AppMagOrigin = (-0.5875 ) + 6.39
  • AppMagOrigin = 5.80

This is just barely less than 6.0, so 36 Ophiuchi would be just barely visible in the night sky of Tau Ceti.

Now all you have to do is plot all the stars on a grid to see what the alien night sky looks like!

Unfortunately, the skymap will be that of a planet oriented the same way that Earth is (tipped about 76 degrees from the galactic plane), but currently I do not know how to rotate the map to any desired orientation. Sorry about that.

Late breaking news: William Sandberg has some notes on how to rotate the map.

Constellations

There was an example starmap in one of Carl Sagan's books, THE COSMIC CONNECTION, I believe. They generated a skymap for Tau Ceti, and Carl's wife drew some constellations. She put Sol in the buttocks of a six legged unicorn constellation.