3-D Starmaps

So, you have lots of lovely star co-ordinates grinning at you from your sheets of computer print outs. Now what? Let's make some interstellar empires!

The following method will yield a dull, boring, regimented set of empires, but it's a start. Using it as a springboard is a lot less work than making it all up from scratch.

One Empire!

Imagine a planet inhabited by imperialistic little opportunistic aliens, just like us, who's star is in a galaxy totally uninhabited by any other intelligent creatures (or at least uninhabited by creatures who can defend themselves). Once our imperialists discover interstellar travel, they will spread to the surrounding stars in a manner similar to a watermellon hitting the sidewalk. Their empire will approximate an expanding sphere, with their homeworld at the center.

Two Empires!

Now, let us start with two empires. Assuming that they have a rough technological parity, the two spheres will expand until the boarders make contact. Then it will resemble two soap bubbles stuck together, with a flat "neutral zone" populated by spies, smugglers, covert battlefleets intent on causing boarder incidents, and planets named "Casablanca".

In reality, the "neutral zone" will be the less like a plane and more like the intersection of the two spheres. It will be like a lop-sided lens shape. The equation for calculating the volume of the neutral zone can be found here

Many Empires!

But space is 3-dimensional! How do we handle multiple empires? As it turns out, there is a branch of mathematics devoted to this problem. It's called "close packing of spheres". My hero R. Buckminster Fuller did some work in this area, though the basic solution will be found by anybody who's ever tried to pack oranges in a box.

Given a center sphere, it will be surrounded by twelve other spheres, each centered on the verticies of a polyhedron called a cuboctahedron or a vector equilibrium. This is the only regular geometric solid where the length of the edges is the same length as the distance from each vertex to the center.

If you want to get a better idea of the arrangement, get some gum-drops and a package of toothpicks and build one. Click here for an image of spheres located at the verticies of a vector equilibrium.

Now, please note that when you pack spheres into a box, there are little voids in there as well. The voids are shaped like octahedrons with concave faces (eight-sided dice if you play RPGs). So, for each octahedron, one-eighth of it belongs to the sphere touching that face. This makes each empire look like a ball with bumps on it.

Stars as Spoils

So the strategy is to use this information to generate the x,y,z co-ords of the various imperial centers, then (using a computer program unless you really like using calculators) run through the lists of stars, assigning each star to the empire that it is closest to. (i.e, compute the distance from a given star to each of the thirteen imperial centers using the true distance formula, and using the smallest distance.)

How does one generate the x,y,z co-ords? Well, I cheated. I used my program that turns star Right Ascension, Declination, and distance into x,y,z. I made some pseudo-Right Ascension and pseudo-Declination co-ords based on projecting a vector equilibrium onto a sphere, then choose the distance between imperial centers. Using an arbitrary distance of 100 between centers yielded the following co-ordinates:

Empire(X, Y, Z)Right AscensionDeclination
Empire Sol(0, 0, 0)
Empire Albert(0, 59, 81)18h+54d44m
Empire Bravo(51, -29, 81)2h+54d44m
Empire Charlie(-51, -29, 81)10h+54d44m
Empire Denver(50, 87, 0)20h+0d
Empire Echo(100, 0, 0)0h+0d
Empire Foxtrot(50, -87, 0)4h+0d
Empire Golf(-50, -87, 0)8h+0d
Empire Hotel(-100, 0, 0)12h+0d
Empire India(-50, 87, 0)16h+0d
Empire Juliette(51, 29, -81)22h-54d44m
Empire Kilo(-0, -59, -81)6h-54d44m
Empire Lima(-51, 29, -81)14h-54d44m

Moving out to the next layer:

Empire(X, Y, Z)Right AscensionDeclination
Empire Mike(0, 114, 164)
Empire November(50, 29, 164)
Empire Oscar(-50, 29, 164)
Empire Papa(50, 145, 82)
Empire Quebec(100, 57, 82)
Empire Romeo(-100, 57, 82)
Empire Sierra(-50, 145, 82)
Empire Tango(100, -57, 164)
Empire Uniform(0, -57, 164)
Empire Victor(150, -29, 82)
Empire Whiskey(100, -114, 82)
Empire X-Ray(0, -114, 82)
Empire Yankee(-100, -57, 164)
Empire Zulu(-100, -114, 82)
Empire Alpha(-150, -29, 82)
Empire Beta(500, 500, 500)
Empire Gamma(100, 171, 0)
Empire Delta(150, 87, 0)
Empire Epsilon(0, 171, 0)
Empire Zeta(100, 114, -82)
Empire Eta(0, 114, -82)
Empire Theta(200, 0, 0)
Empire Iota(150, -87, 0)
Empire Kappa(150, 29, -82)
Empire Lambda(100, -57, -82)
Empire Mu(100, -171, 0)
Empire Nu(0, -171, 0)
Empire Xi(50, -145, -82)
Empire Omicron(-100, -171, 0)
Empire Pi(-150, -87, 0)
Empire Rho(-50, 145, -82)
Empire Sigma(-100, -57, -82)
Empire Tau(-200, 0, 0)
Empire Upsilon(-150, 87, 0)
Empire Phi(-150, 29, -82)
Empire Chi(-100, 171, 0)
Empire Psi(-100, 114, -82)
Empire Omega(100, 57, -164)
Empire Aleph(50, -29, -164)
Empire Beth(0, 57, -164)
Empire Gimmel(0, -144, -164)
Empire Daleth(-50, -29, -164)
Empire Zayin(-100, 57, -164)

You might want to use a smaller number than 100 for the separation distance between empires if you are using the Gliese data. Most of the Gliese stars are much closer than that.

When deciding which empire claims each star, you can use the even handed "it belongs to the closest empire center" approach. Alternatively, you can assign a radius to each empire. Stars within a radius belong to that empire. Stars within two or more radii are in disputed territory (astro-tory?). Some stars might not belong to any empire.

Sectors as Spoils

One can use the close packing to delineate "sectors" of space instead of empires. If one wants to follow Issac Asimov's tradition, discover which star is brightest (i.e, has the lowest absolute magnitude) in each sector and name the sector after it. In a few of Asimov's novels, Sol is described as being in "the Sirius sector".

Michael Andre-Driussi decided to take matters into his own hands. Using the Internet Stellar Database, he has compiled a gazetteer of the first thirteen sectors:

SectorBrightest Star#G#F#K
BravoClaw (for Alpha(2)Librae)22332
DenverZeta Aquilae19424
FoxtrotDelta Velorum12710
GolfWo 92611498
IndiaEpsilon Cephei15622
JulietteAl Na'ir11819
KiloDelta Hydri14627

Sector is from my table, Brightest Star is the brightest star in the sector (so sector Charlie would be the "Regulus Sector"), and #G, #F, #K is the number of stars of spectral class G, F, and K respectively. One can also see that Sector Claw is the richest in class G stars. Nice work Michael!

Distance Between Empires

How does one come up with a realistic value for average separation between alien empires? The best idea I have come up with to date is to use the famous Drake equation. Just plug in values that seem reasonable for the SF universe you envision, and use the number that pops out. If you want a more in-depth discussion of the Drake equation, look here. There is also a Drake Equation Calculator. Reputable astronomers come out with answers that are entire orders of magnitude different, so if you fudge your figures, nobody will notice. Here are some guesses at values for the Drake equation by Imamura.

The Drake equation yields N, the number of civilizations currently in the galaxy. You can calculate the average distance between civilizations with the following equation:

D = CUBE_ROOT( GalVol / N )


  • D = average distance between civilizations in light years
  • CUBE_ROOT(x) means take the cube root of x
  • GalVol is the volume of the galaxy in cubic light years = 5.65x1012 cubic light years
  • N is the number of civilizations in the galaxy

This is based on the equation N*D^3 = GalVol.

Volume of the Galaxy

If one uses the value 1.63x1011 cubic parsecs for GalVol, D will be in parsecs. One cubic parsec equals 34.7 cubic light years.

There is a problem here, as Stephen Dole's HABITABLE PLANETS FOR MAN cites a value of 1.6x1012 for GalVol. 1.6x1012 is ten times as big as 1.63x1011, which I think you will agree is a significant difference. For now, either try to research a better value for GalVol or use the value that yields a result you like better. The 5.65x1012 figure is from Nick Strobel's wonderful Lifezones page. Basil did some calculations based on data from the The Cambridge Atlas of Astronomy, and came up with a figure of approximately 8.17x1012 cubic light years for the galactic disk plus the galactic bulge, and about 5.24x1014 cubic light years for the disk, bulge, and halo.


If you calculate a value of N to be 660, then:

  • D = CUBE_ROOT( GalVol / N )
  • D = CUBE_ROOT( 5.65x1012 / 660)
  • D = CUBE_ROOT(8.56x109)
  • D = 2047 light years

Density of Stars

Dole also sites a value of 8.52x10-2 stars per cubic parsec (2.46x10-3 stars per cubic light year, there are about 34.7 cubic light years in one cubic parsec). Most of the references I've seen agree it somewhere between 8.33x10-2 and 8.67x10-2 stars per cubic parsec, with Dole's estimate near the middle. You can split the difference and use 8.5x10-2 stars per cubic parsec (2.45x10-3 stars per cubic light year).

The end result of Dole's book is an estimate of the density of human-habitable planets in the galaxy: 4.0x10-4 human habitable planets per cubic parsec (1.15x10-5 per cubic light year). Dole's book is a bit dated, though, and this value might be unduely pessimistic.

I took a look at the HabHYG database. Taking a sphere centered on Sol of 15.3 parsecs in radius (50 light-years) the database listed 993 total stars, and of those 211 were likely to host a human-habitable planet (according to the HabCat database). The implication is that out of all the stars in this sample, 21% of stars could possibly host a human-habitable planet (The HabCat database has removed from it all stars that obviously cannot host human-habitable planets, the remainder are not guaranteed to have such planets. For a best case scenario, I will assume that all of them do.). Apply that to our star density figures and you get a value of about 1.79x10-2 habitability-likely stars per cubic parsec (5.14x10-4 habitability-likely stars per cubic light year).

Now many of these stars are in multiple star systems, like Alpha Centauri. There are about 1.5 stars per star system, e.g., if you have 5000 stars in a given volume, there will be only about 5000 / 1.5 = 3,300 discrete star systems.

How Much in a Sphere?

The volume of a sphere is:

VolSphere = (4/3) * π * (r^3)


  • π = 3.1415927 aproximately, and r is the radius of the sphere.

Using our 2047 light year diameter sphere (1023.5 light year radius)

  • VolSphere = (4/3) * π * (r^3)
  • VolSphere = (1.3333333) * 3.1415927 * (1023.5^3)
  • VolSphere = (1.3333333) * 3.1415927 * (1070599167)
  • VolSphere = 4484515369 = 4.49x109 cubic light years

This sphere will contain 4.49x109 * 2.45x10-3 = 11,000,000 stars. If you follow Dole, there will be 4.49x109 * 1.15x10-5 = 51,600 human habitable stars. If you follow my dubious HabHYG figures, there will be 4.49x109 * 5.14x10-4 = 2,310,000 human habitable stars. There will be about 11,000,000 / 1.5 = 7,300,000 star systems.

General Equations

Assuming you accept the HabHYG figures, you can use the following rules of thumb. Given the desired number of stars or number of habitable stars, the necessary radius will be:

  • Rpc = cubeRoot(Nstars * 2.9)
  • Rly = cubeRoot(Nstars * 97)
  • Rpc = cubeRoot(NhStars * 13)
  • Rly = cubeRoot(NhStars * 464)


  • Rpc = sphere radius in parsecs
  • Rly = sphere radius in light years
  • Nstars = number of stars
  • NhStars = number of stars with human habitable planets

Given the radius, the number of stars or habitable stars will be:

  • Nstars = Rpc^3 * 0.35
  • Nstars = Rly^3 * 0.01
  • NhStars = Rpc^3 * 0.075
  • NhStars = Rly^3 * 0.0022

If your calculator does not have a cube root button, you can use the "Xy" button instead. Type in the number, hit Xy, type in 0.333333333 then hit the equal button.


How did I derive the rules of thumb? I just used the sphere volume equation.

  • VolSphere = (4/3) * π * (r^3)
  • VolSphere = (4/3) * π * (Rpc^3)

(since there are 8.5x10-2 stars per cubic parsec, there are 1/8.5x10-2 = 12 cubic parsecs per star. Therefore, VolSphere = Nstars * 12)

  • Nstars * 12 = (4/3) * π * (Rpc^3)
  • Nstars * 12 / (4/3) * π = Rpc^3
  • cubeRoot(Nstars * 12 / (4/3) * π) = Rpc
  • cubeRoot(Nstars * 12 / 1.33333 * 3.1415927) = Rpc
  • cubeRoot(Nstars * 12 / 4.189) = Rpc
  • cubeRoot(Nstars * 2.9) = Rpc


  • Rpc = cubeRoot(Nstars * 2.9)

Distance Between Stars

It would also be nice to know the average distance between adjacent stars. You can figure this by setting Nstars to One and solving for Rpc. Multiply Rpc by two and use that for the average separation.

Why? Well, by setting Nstars to One, you are figuring the volume of a sphere just big enough to hold one star. The radius of the sphere is Rpc. If two spheres are adjacent, their surfaces touch. This means the distance between the two centers is Rpc times two.

Anyway, I figure the equation is:

  • D = cubeRoot( (1/S) / ((4/3) * π) ) * 2
  • D = cubeRoot( (1/S) / 4.189 ) * 2


  • D = average distance between stars
  • S = star density

Using the HabCAT figure of 5.14x10-4 habitability-likely stars per cubic light year, what's the average separation?

  • Average Separation = cubeRoot( (1/5.14x10-4) / 4.189 ) * 2
  • Average Separation = cubeRoot( 1945.53 / 4.189 ) * 2
  • Average Separation = cubeRoot( 464.44 ) * 2
  • Average Separation = 7.74 * 2
  • Average Separation = 15.48 light years

Alternatively, if you have a volume and the number of stars, the equation is:

D = cubeRoot( Volume / Nstars )

Also, be aware that the galactic disc is only about 1000 light years thick. If the sphere's diameter is greater than this, the estimates of the number of stars and number of human habitable stars will be incorrectly high.

How Crowded is the Neighborhood?

The late Dr. Carl Sagan had another somewhat less useful equation:

Di = Ds * F-1/3


  • Di = average distance between stars that are (or were) host to aliens at least as far developed as Earth
  • Ds = average distance between stars in this neighborhood (approximately one parsec for our neighborhood)
  • F = fraction of all stars where life and intelligence are at least as far developed as Earth

I say "less useful" because it is a bit difficult to determine a good value for F. If you are just picking a value at random, this is functionally equivalent to picking Di at random. In which case you can just choose a value you like for Di and don't bother with the equation.

Sagan estimates that about 2% of all stars have a planet with appropriate conditions needed to develop life like ours. If we assume that humans are average, then obviously half of those planets will host life more advanced than ours and half will host primitive life forms. So Sagan estimates F = 2% / 2 = 1% or 0.01.

  • Di = Ds * F-1/3
  • Di = 1 parsec * 0.01-1/3
  • Di = 1 * 4.64
  • Di = 4.64 parsec = 15 light years

Now to figure the separation between the homeworlds of alien empires, we have to figure out how many of these aliens are currently in existence. Some might have gone extinct. That star 15 light years away might be crawling with aliens or it might just be an ancient planet with nothing on it but Forerunner ruins of some by-gone empire.

To figure this we need a value for that pesky variable "L" or the average lifespan of a technological civilization.

Dt = Di * (T / L)1/3


Dt = Ds * (T / (F * L))1/3


  • Dt = average distance between stars that are host to aliens with a technological civilization
  • T = age of the galaxy in years (1010)
  • L = average lifespan of a technological civilization in years

So you can use Dt for the average spacing between alien empires.

The only technological civilization we know of is our own, and how long it will last is anybody's guess. Carl guesses that F = 0.01 and L = 105 so:

  • Dt = Ds * (T / (F * L))1/3
  • Dt = 1 parsec * (1010 / (0.01 * 105))1/3
  • Dt = 1 parsec * (1010 / (1000))1/3
  • Dt = 1 parsec * (107)1/3
  • Dt = 1 parsec * 220
  • Dt = 220 parsecs or 720 light years