lots of custom systems imported from star catalogue

git-svn-id: https://pioneer.svn.sourceforge.net/svnroot/pioneer/trunk@189 e632f14b-6550-0410-b89e-a82653faca30
master
tompox 2008-12-30 19:58:32 +00:00
parent 0b9a9fa533
commit 90332288de
7 changed files with 275 additions and 26 deletions

170
scripts/parse_gliese3.py Executable file
View File

@ -0,0 +1,170 @@
#!/usr/bin/env python
#
# This script parses the gliese star catalogue (v3, 1991) and spits out custom system
# specifications for pioneer that you can stick in custom_starsystems.cpp
#
f = open("GLIESE3.DAT","r")
SECTOR_SIZE = 8.0 # ly
RANGE = 20.0 # ly
Z_RESOLVE = "mangle" # either "preserve", "cull", or "mangle"
# Name substitutions
namesubs = { "ALF CMa ADS 5423 LTT 2638": "Sirius",
"van Maanen 2": "Van Maanen's Star",
"ALF Cmi": "Procyon",
"ALF Cen": "Alpha Centauri",
"AC+58:25001 Stein 2051": "Stein 2051",
"EPS Eri": "Epsilon Eridani",
"Wolf 629 cpm with Gl 644 sep 72\" 315d": "Wolf 629",
"61 Cyg": "61 Cygni",
"TAU Cet": "Tau Ceti",
"CP -40:7021 LTT 6210 comp. B is optical": "Gliese 588",
"ALF Aql": "Altair",
"L 722-22 Hei 299 sep 0.14\" V(AB) = 11.50 d(m) = 0.5 :": "Hei 299",
"L 726-008 LDS 838 V(AB) = 11.89 d(m) = 0.14": "UV Ceti",
"ETA Cas": "Eta Cassiopeia",
"LTT 1907 OMI(2) Eri": "40 Eridani",
"DEL Pav": "Delta Pavonis",
"L 789-006 V(AB) = 12.30 d(m) = 1.0 ; a = 0.36\" P = 2.2 yr": "Luyten 789-006",
"LTT 12923 Wolf 359": "Wolf 359",
"AC-24:2833-183": "Ross 154",
"ADS 10417AB V(AB) = 4.32 d(m) = 0.04": "ADS 10417",
"Ross 986 AC+38:23616": "Ross 986",
"V1581 Cyg orbit in Harrington AJ 100, p 559 (1990)": "GJ 1245",
"Ross 614 V(AB) = 10.10 d(m) = 3.5 ?": "Ross 614",
"ADS 11046 V(AB) = 4.02 d(m) = 1.80": "70 Ophiuchi",
"ADS 10417C cpm to Gl 663, sep 732\"": "Gliese 663",
"LFT 295 LTT 1702": "Luyten 372-58",
"SIG Dra": "Sigma Draconis",
"Proxima Cen": "Proxima",
"AD Leo": "AD Leonis",
"ADS 15972 Kr 60 V(AB) = 9.59 d(m) = 1.67": "Kruger 60",
"L 354-89 CD-49:13515 Sm 83": "Luyten 354-89",
"EV Lac opt. comp. sep 5\"": "EV Lacertae",
"Wolf 424 V(AB) = 12.43 d(m) = 0.3": "Wolf 424",
"L 1159-016": "Luyten 1159-016",
"EPS Ind": "Epsilon Indi",
"GJ 1116": "EI Cancri",
"GJ 1111": "DX Cancri",
"GX And": "GX Andromedae",
"Gliese 411": "Lalande 21185",
"Gliese 273": "Luyten's Star",
"L 145-141": "Luyten 145-141",
"LTT 670 L 725-32": "YZ Ceti"
}
import re
from math import *
from random import *
PC_2_LY = 3.261633
starsystems = {}
def polar2cartesian(ascen, decl):
return (sin(ascen)*cos(decl), sin(decl), cos(ascen)*cos(decl))
def cross(a,b):
return [a[1]*b[2] - a[2]*b[1], a[2]*b[0] - a[0]*b[2], a[0]*b[1] - a[1]*b[0]]
def normalOf(a):
l = sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2])
return [a[0]/l, a[1]/l, a[2]/l]
def matVecMul(m, v):
out = [0,0,0]
out[0] = m[0]*v[0] + m[1]*v[1] + m[2]*v[2]
out[1] = m[3]*v[0] + m[4]*v[1] + m[5]*v[2]
out[2] = m[6]*v[0] + m[7]*v[1] + m[8]*v[2]
return out
def vecNeg(v):
return (-v[0], -v[1], -v[2])
# need to convert coords from earthto galactic
# rows first guvnah
galZ = normalOf(polar2cartesian(2*pi*12/24.0 + 2*pi*51/(24*60.0), 27.4*(pi/180.0)))
galX = vecNeg(normalOf(polar2cartesian(2*pi*17/24.0 + 2*pi*45/(24*60.0), -28.93*(pi/180.0))))
galY = normalOf(cross(galZ, galX))
#galX = normalOf(cross(galZ, galX))
galRot = (galX[0], galX[1], galX[2],
galY[0], galY[1], galY[2],
galZ[0], galZ[1], galZ[2])
while 1:
s = f.readline()
if not s: break
s = s.replace("\r\n","")
try:
glieseName = s[0:8]
name = s[188:]
if not name:
name = glieseName.strip().replace("Gl", "Gliese")
if name in namesubs.keys():
name = namesubs[name]
parallax = float(s[108:114])/1000.0
dist = PC_2_LY/parallax
if (dist > RANGE): continue
decl = int(s[21:24])
decl_frac = float(s[25:29])/60.0
if (decl<0): decl -= decl_frac
else: decl += decl_frac
decl *= pi/180.0
ascen = 2*pi*float(s[12:14])/24.0
ascen += 2*pi*float(s[15:17])/(24.0*60)
ascen += 2*pi*float(s[18:20])/(24.0*60*60)
pos = (dist*sin(ascen)*cos(decl), dist*sin(decl), dist*cos(ascen)*cos(decl))
if Z_RESOLVE == "cull":
if (fabs(pos[2]) > SECTOR_SIZE): continue
elif Z_RESOLVE == "mangle":
if (fabs(pos[2]) > SECTOR_SIZE):
pos = cross(cross([0,0,1], pos),[0,0,1])
pos = normalOf(pos)
pos = [pos[0]*dist, pos[1]*dist, pos[2]*dist]
# now all on x,y plane. give z some random shit and be done
# (what a crap technique...
pos[2] = (random()-0.5)*SECTOR_SIZE
pos = matVecMul(galRot, pos)
# make pioneer sector coords
pcoords = [(pos[0]+4)/SECTOR_SIZE, (pos[1]+4)/SECTOR_SIZE, pos[2]/SECTOR_SIZE]
spectral_class = s[54:66]
wank = re.search("\s(D[ABOQZCX])(\d?)", spectral_class)
if wank:
spec = "StarSystem::TYPE_WHITE_DWARF"
specnum = wank.group(2)
spectral_class = wank.group(1)+specnum
else:
wank = re.search("s?d?([OBAFGKMobafgkm])(\d?)", spectral_class)
if wank:
spec = "StarSystem::TYPE_STAR_"+wank.group(1).upper()
specnum = wank.group(2)
spectral_class = wank.group(1).upper()+specnum
else:
import sys
print >> sys.stderr, "Could not parse spectral class for ", name, ": ", spectral_class
continue
# sector
sx = 0
sy = 0
while (pcoords[0] > 1): pcoords[0] -= 1 ; sx += 1
while (pcoords[0] < 0): pcoords[0] += 1 ; sx -= 1
while (pcoords[1] > 1): pcoords[1] -= 1 ; sy += 1
while (pcoords[1] < 0): pcoords[1] += 1 ; sy -= 1
if (starsystems.has_key(glieseName)):
starsystems[glieseName]["components"].append(spectral_class)
starsystems[glieseName]["spec"].append(spec)
else:
starsystems[glieseName] = { "name": name, "spec":[spec], "sx":sx, "sy":sy, "coords":pcoords, "components":[spectral_class] }
#print "{ \"%s\", 0, StarSystem::TYPE_%s, %d, %d, vector3f(%.3f,%.3f,%.3f) }," % \
# (name.replace("\"","\\\""), spec, sx, sy, pcoords[0], pcoords[1], pcoords[2])
except ValueError:
pass
k = starsystems.keys()
for s in k:
s = starsystems[s]
comment = "// Components: " + ", ".join(s["components"])
print "{ \"%s\", 0, {%s}, %d, %d, vector3f(%.3f,%.3f,%.3f) }, %s" % \
(s["name"].replace("\"","\\\""), ", ".join(s["spec"]), s["sx"], s["sy"], s["coords"][0], s["coords"][1], s["coords"][2], comment)

View File

@ -22,7 +22,7 @@ void Sector::GetCustomSystems()
System s;
s.p = SIZE*sys->pos;
s.name = custom_systems[i].name;
s.primaryStarClass = custom_systems[i].primaryType;
s.primaryStarClass = custom_systems[i].primaryType[0];
s.customDef = sys->sbodies;
m_systems.push_back(s);
}
@ -49,7 +49,6 @@ Sector::Sector(int x, int y)
s.p.x = rng.Double(SIZE);
s.p.y = rng.Double(SIZE);
s.p.z = rng.Double(2*SIZE)-SIZE;
s.name = GenName(rng);
s.customDef = 0;
float spec = rng.Int32(1000000);
@ -71,6 +70,7 @@ Sector::Sector(int x, int y)
} else {
s.primaryStarClass = StarSystem::TYPE_STAR_M;
}
s.name = GenName(s, rng);
m_systems.push_back(s);
}
@ -84,15 +84,33 @@ float Sector::DistanceBetween(const Sector *a, int sysIdxA, const Sector *b, int
return dv.Length();
}
std::string Sector::GenName(MTRand &rng)
std::string Sector::GenName(System &sys, MTRand &rng)
{
std::string name;
const int dist = MAX(abs(sx),abs(sy));
int len = rng.Int32(2,3);
for (int i=0; i<len; i++) {
name += sys_names[rng.Int32(0,SYS_NAME_FRAGS-1)];
int chance = 100;
switch (sys.primaryStarClass) {
case StarSystem::TYPE_STAR_O:
case StarSystem::TYPE_STAR_B: break;
case StarSystem::TYPE_STAR_A: chance += dist; break;
case StarSystem::TYPE_STAR_F: chance += 2*dist; break;
case StarSystem::TYPE_STAR_G: chance += 4*dist; break;
case StarSystem::TYPE_STAR_K: chance += 8*dist; break;
default: chance += 16*dist; break;
}
if (rng.Int32(chance) < 100) {
/* well done. you get a real name */
int len = rng.Int32(2,3);
for (int i=0; i<len; i++) {
name += sys_names[rng.Int32(0,SYS_NAME_FRAGS-1)];
}
name[0] = toupper(name[0]);
return name;
} else {
char buf[128];
snprintf(buf, sizeof(buf), "SC %d%+d%+d", rng.Int32(1000,9999),sx,sy);
return buf;
}
name[0] = toupper(name[0]);
return name;
}

View File

@ -24,7 +24,7 @@ public:
std::vector<System> m_systems;
private:
void GetCustomSystems();
std::string GenName(MTRand &rand);
std::string GenName(System &sys, MTRand &rand);
int sx, sy;
};

View File

@ -14,7 +14,7 @@ SectorView::SectorView(): GenericSystemView()
m_rot_x = m_rot_z = 0;
m_secx = m_secy = 0;
m_selected = -1;
m_zoom = 1;
m_zoom = 1.2;
m_infoLabel = new Gui::Label("");
Add(m_infoLabel, 2, Gui::Screen::GetHeight()-Gui::Screen::GetFontHeight()-66);

View File

@ -284,6 +284,7 @@ vector3d StarSystem::Orbit::CartesianPosAtTime(double t)
*/
static std::vector<int> *AccreteDisc(int size, int bandSize, int density, MTRand &rand)
{
if (size > 10000) size = 10000;
std::vector<int> *disc = new std::vector<int>(size);
int bandDensity = 0;

View File

@ -56,20 +56,80 @@ const CustomSBody sol_system[] = {
};
const CustomSystem custom_systems[] = {
{ "Sol", sol_system, StarSystem::TYPE_STAR_G, 0, 0, vector3f(.5, .5, 0) },
{ "Alpha Centauri", 0, StarSystem::TYPE_STAR_G, 0, 0, vector3f(.1, .9, -0.05) },
{ "Proxima Centauri", 0, StarSystem::TYPE_STAR_M, 0, 0, vector3f(.127, .87, -0.05) },
{ "Barnard's Star", 0, StarSystem::TYPE_STAR_M, 0, 0, vector3f(.1, .15, .2) },
{ "Lalande 21185", 0, StarSystem::TYPE_STAR_M, 0, 0, vector3f(.8, .52, .95) },
{ "Tau Ceti", 0, StarSystem::TYPE_STAR_G, 0, 0, vector3f(.72, .49, -.95) },
{ "Luyten 726-8", 0, StarSystem::TYPE_STAR_M, 0, 0, vector3f(.64, .6, -.75) },
{ "Wolf 359", 0, StarSystem::TYPE_STAR_M, 0, 0, vector3f(.55, .8, .80) },
{ "Ross 128", 0, StarSystem::TYPE_STAR_M, 0, 1, vector3f(.48, .3, .98) },
{ "Ross 154", 0, StarSystem::TYPE_STAR_M, -1, 0, vector3f(.5, .4, -.2) },
{ "Sirius", 0, StarSystem::TYPE_STAR_A, 0, 1, vector3f(.7, .5, -.1) },
{ "Procyon", 0, StarSystem::TYPE_STAR_F, 1, 1, vector3f(.4, .55, .3) },
{ "Luyten's Star", 0, StarSystem::TYPE_STAR_M, 1, 1, vector3f(.55, .65, .2) },
{ "G51-15", 0, StarSystem::TYPE_STAR_M, 1, 1, vector3f(.41, .2, .8) },
{ "Epsilon Eridani", 0, StarSystem::TYPE_STAR_K, 1, 1, vector3f(.01, .15, -.8) },
{ "Sol", sol_system, {StarSystem::TYPE_STAR_G}, 0, 0, vector3f(.5, .5, 0) },
{ "Epsilon Indi", 0, {StarSystem::TYPE_STAR_K}, -1, 0, vector3f(0.629,0.880,-1.045) }, // Components: K5
{ "Luyten 1159-016", 0, {StarSystem::TYPE_STAR_M}, 2, 0, vector3f(0.316,0.651,0.008) }, // Components: M8
{ "Wolf 424", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 0, -2, vector3f(0.189,0.951,0.771) }, // Components: M5, M7
{ "DX Cancri", 0, {StarSystem::TYPE_STAR_M}, 1, 0, vector3f(0.701,0.862,0.784) }, // Components: M6
{ "LTT 17897", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_K, StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 2, 1, vector3f(0.460,0.384,-0.402) }, // Components: M4, K, M, M6
{ "EV Lacertae", 0, {StarSystem::TYPE_STAR_M}, 0, -2, vector3f(0.864,0.870,1.249) }, // Components: M4
{ "Luyten 354-89", 0, {StarSystem::TYPE_STAR_M}, -1, 0, vector3f(0.204,0.746,-1.365) }, // Components: M1
{ "Gliese 1", 0, {StarSystem::TYPE_STAR_M}, -1, 1, vector3f(0.657,0.679,-1.203) }, // Components: M4
{ "Gliese 570", 0, {StarSystem::TYPE_STAR_K, StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.174,0.358,-0.281) }, // Components: K5, M2
{ "Kruger 60", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 0, -2, vector3f(0.903,0.932,0.004) }, // Components: M2, M6
{ "Gliese 205", 0, {StarSystem::TYPE_STAR_M}, 2, 1, vector3f(0.488,0.496,-0.805) }, // Components: M1
{ "Proxima", 0, {StarSystem::TYPE_STAR_M}, 0, 0, vector3f(0.135,0.882,-0.017) }, // Components: M5
{ "Gliese 825", 0, {StarSystem::TYPE_STAR_M}, -1, 0, vector3f(0.365,0.424,-1.093) }, // Components: M0
{ "Gliese 876", 0, {StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.603,0.900,-0.112) }, // Components: M5
{ "Gliese 725", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 0, -1, vector3f(0.482,0.203,0.590) }, // Components: M4, M5
{ "Sigma Draconis", 0, {StarSystem::TYPE_STAR_K}, 0, -2, vector3f(0.914,0.420,0.859) }, // Components: K0
{ "Gliese 380", 0, {StarSystem::TYPE_STAR_K}, 1, -1, vector3f(0.979,0.462,0.631) }, // Components: K2
{ "Sirius", 0, {StarSystem::TYPE_STAR_A, StarSystem::TYPE_WHITE_DWARF}, 1, 1, vector3f(0.222,0.273,-0.173) }, // Components: A1, DA2
{ "Gliese 682", 0, {StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.643,0.971,-0.213) }, // Components: M3
{ "AD Leonis", 0, {StarSystem::TYPE_STAR_M}, 2, 0, vector3f(0.483,0.012,-0.071) }, // Components: M4
{ "Luyten 372-58", 0, {StarSystem::TYPE_STAR_M}, 0, 1, vector3f(0.822,0.495,-1.402) }, // Components: M4
{ "Gliese 191", 0, {StarSystem::TYPE_STAR_M}, 0, 1, vector3f(0.925,0.696,-0.938) }, // Components: M0
{ "Gliese 663", 0, {StarSystem::TYPE_STAR_K}, -2, 0, vector3f(0.279,0.572,0.278) }, // Components: K5
{ "70 Ophiuchi", 0, {StarSystem::TYPE_STAR_K, StarSystem::TYPE_STAR_K}, -2, -1, vector3f(0.758,0.509,0.420) }, // Components: K0, K5
{ "Ross 614", 0, {StarSystem::TYPE_STAR_M}, 1, 1, vector3f(0.908,0.402,-0.195) }, // Components: M4
{ "GJ 1245", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 0, -2, vector3f(0.126,0.637,0.295) }, // Components: M5, M
{ "Gliese 526", 0, {StarSystem::TYPE_STAR_M}, -1, -2, vector3f(0.418,0.839,0.993) }, // Components: M4
{ "Ross 986", 0, {StarSystem::TYPE_STAR_M}, 2, 0, vector3f(0.835,0.449,0.829) }, // Components: M4
{ "ADS 10417", 0, {StarSystem::TYPE_STAR_K, StarSystem::TYPE_STAR_K}, -2, 0, vector3f(0.346,0.576,0.274) }, // Components: K1, K1
{ "GJ 1002", 0, {StarSystem::TYPE_STAR_M}, -1, 2, vector3f(0.778,0.260,-0.521) }, // Components: M5
{ "Ross 154", 0, {StarSystem::TYPE_STAR_M}, -1, 0, vector3f(0.344,0.274,-0.205) }, // Components: M4
{ "L 674-015", 0, {StarSystem::TYPE_STAR_M}, 1, 2, vector3f(0.885,0.442,-0.508) }, // Components: M4
{ "Wolf 359", 0, {StarSystem::TYPE_STAR_M}, 0, 0, vector3f(0.746,0.990,0.806) }, // Components: M6
{ "AC+79:3888", 0, {StarSystem::TYPE_STAR_M}, 1, -1, vector3f(0.511,0.157,1.308) }, // Components: M4
{ "Luyten 789-006", 0, {StarSystem::TYPE_STAR_M}, -1, 0, vector3f(0.118,0.781,0.059) }, // Components: M5
{ "Gliese 674", 0, {StarSystem::TYPE_STAR_M}, -2, 1, vector3f(0.739,0.046,-0.209) }, // Components: M3
{ "Procyon", 0, {StarSystem::TYPE_STAR_F, StarSystem::TYPE_WHITE_DWARF}, 1, 1, vector3f(0.663,0.267,0.311) }, // Components: F5, DA
{ "Van Maanen's Star", 0, {StarSystem::TYPE_WHITE_DWARF}, 2, 0, vector3f(0.279,0.482,-0.330) }, // Components: DZ7
{ "Delta Pavonis", 0, {StarSystem::TYPE_STAR_G}, -2, 1, vector3f(0.796,0.492,-1.240) }, // Components: G8
{ "Gliese 752", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, -2, -1, vector3f(0.739,0.013,-0.114) }, // Components: M3, M5
{ "Gliese 687", 0, {StarSystem::TYPE_STAR_M}, 0, -2, vector3f(0.744,0.895,1.020) }, // Components: M3
{ "40 Eridani", 0, {StarSystem::TYPE_STAR_K, StarSystem::TYPE_WHITE_DWARF, StarSystem::TYPE_STAR_M}, 1, 1, vector3f(0.943,0.037,-1.224) }, // Components: K1, DA4, M4
{ "AC+12:1800-213", 0, {StarSystem::TYPE_STAR_M}, 2, 1, vector3f(0.848,0.058,-0.410) }, // Components: M4
{ "Eta Cassiopeia", 0, {StarSystem::TYPE_STAR_G, StarSystem::TYPE_STAR_K}, 1, -2, vector3f(0.913,0.976,1.272) }, // Components: G3, K7
{ "Hei 299", 0, {StarSystem::TYPE_STAR_M}, -1, 2, vector3f(0.813,0.384,-0.843) }, // Components: M4
{ "Ross 128", 0, {StarSystem::TYPE_STAR_M}, 1, 0, vector3f(0.838,0.638,-0.344) }, // Components: M4
{ "Gliese 628", 0, {StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.982,0.421,0.680) }, // Components: M3
{ "Gliese 229", 0, {StarSystem::TYPE_STAR_M}, 1, 2, vector3f(0.964,0.149,-0.754) }, // Components: M1
{ "Luyten 145-141", 0, {StarSystem::TYPE_WHITE_DWARF}, -1, 2, vector3f(0.691,0.179,-0.095) }, // Components: DQ6
{ "EI Cancri", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 2, 0, vector3f(0.621,0.679,0.148) }, // Components: M, M
{ "Altair", 0, {StarSystem::TYPE_STAR_A}, -1, -1, vector3f(0.142,0.022,-0.299) }, // Components: A7
{ "Gliese 887", 0, {StarSystem::TYPE_STAR_M}, -1, 1, vector3f(0.413,0.547,-0.115) }, // Components: M2
{ "Gliese 908", 0, {StarSystem::TYPE_STAR_M}, -1, -2, vector3f(0.406,0.751,0.998) }, // Components: M2
{ "Gliese 588", 0, {StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.185,0.968,-0.790) }, // Components: M3
{ "Tau Ceti", 0, {StarSystem::TYPE_STAR_G}, 1, 1, vector3f(0.127,0.778,-0.324) }, // Components: G8
{ "LTT 12976", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 1, -1, vector3f(0.986,0.133,0.773) }, // Components: M2, M6
{ "Sm 50", 0, {StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.411,0.693,-1.341) }, // Components: M0
{ "61 Cygni", 0, {StarSystem::TYPE_STAR_K, StarSystem::TYPE_STAR_K}, 0, -1, vector3f(0.302,0.108,-0.136) }, // Components: K5, K7
{ "L 347-014", 0, {StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.390,0.787,-0.927) }, // Components: M4
{ "Wolf 629", 0, {StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.334,0.090,0.872) }, // Components: M4
{ "Luyten's Star", 0, {StarSystem::TYPE_STAR_M}, 1, 1, vector3f(0.788,0.305,0.266) }, // Components: M3
{ "Gliese 783", 0, {StarSystem::TYPE_STAR_K, StarSystem::TYPE_STAR_M}, -2, 0, vector3f(0.522,0.324,-1.169) }, // Components: K3, M3
{ "Barnard's star", 0, {StarSystem::TYPE_STAR_M}, -1, 0, vector3f(0.877,0.131,0.186) }, // Components: M5
{ "Epsilon Eridani", 0, {StarSystem::TYPE_STAR_K}, 1, 0, vector3f(0.351,0.735,-0.999) }, // Components: K2
{ "UV Ceti", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 0, 0, vector3f(0.754,0.473,-1.040) }, // Components: M5, M5
{ "GX Andromedae", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_STAR_M}, 1, -1, vector3f(0.269,0.470,0.580) }, // Components: M2, M6
{ "Stein 2051", 0, {StarSystem::TYPE_STAR_M, StarSystem::TYPE_WHITE_DWARF}, 2, -1, vector3f(0.383,0.316,0.278) }, // Components: M4, DC5
{ "AC+33:25644", 0, {StarSystem::TYPE_STAR_M}, 2, 0, vector3f(0.770,0.607,0.598) }, // Components: M4
{ "Ross 248", 0, {StarSystem::TYPE_STAR_M}, 0, -1, vector3f(0.914,0.335,-0.374) }, // Components: M6
{ "L 205-128 Sm 3", 0, {StarSystem::TYPE_STAR_M}, -2, 1, vector3f(0.332,0.504,-0.605) }, // Components: M3
{ "Alpha Centauri", 0, {StarSystem::TYPE_STAR_G, StarSystem::TYPE_STAR_K}, 0, 0, vector3f(0.112,0.882,-0.006) }, // Components: G2, K0
{ "Lalande 21185", 0, {StarSystem::TYPE_STAR_M}, 0, 0, vector3f(0.933,0.539,0.930) }, // Components: M2
{ "YZ Ceti", 0, {StarSystem::TYPE_STAR_M}, 0, 1, vector3f(0.903,0.723,-0.826) }, // Components: M5
{ 0 }
};

View File

@ -21,7 +21,7 @@ struct CustomSBody {
struct CustomSystem {
const char *name;
const CustomSBody *sbodies; // 0 to let system be random
StarSystem::BodyType primaryType;
StarSystem::BodyType primaryType[4];
int sectorX, sectorY;
vector3f pos;
};