You can clone with
HTTPS or Subversion.
We will try to produce an object id schema system to keep track of objects and bodies. Some will be generated from within this libarary, others will be populated from MetaSim either directly or proxy from other reference engines. Top level positions/coordinates take precedent. Other parameters are meta, and might be equally synonmous with other reference engines. This is just a sketch of data that would be important.
sim_id: [simulation id] from MetaSim/WebHex
guid: [global id] local
ss_id: [Solar system id] local, for getting absolute coordinates
Position Cartesian (center of mass, maybe integration later for moon volcanism)
x [barycentric ss position] local to send to renderer
y [barycentric ss position] local to send to renderer
z [barycentric ss position] local to send to renderer
vx [barycentric ss velocity] local to send to renderer
vy [barycentric ss velocity] local to send to renderer
vz [barycentric ss velocity] local to send to renderer
per [period time to do one revolution if in stable orbit] = native year
phase [phase of the year,]
ses [seasonality of the planet based on rotation angles]
w_p [rotation angle 'pitch'] = axial tilt
w_r [rotation angle 'roll'] = precesion
w_y [rotation angle 'yaw'] = time of day
f_p [rotation freq 'pitch']
f_r [rotation freq 'roll']
f_y [rotation freq 'yaw']
Optional position equations to send to renderer
Eq(x, y, z) = Equation[ If Parabolic, If Hyperbolic, If Ellipse, Else NONE]
positioning. Each equation would include orbital params seen below:
Store radial/cyl coordinates as well for easier calculation internal
pos.r [radial position]
pos.w [theta angle ]
pos.p [phi angle]
pos.h [height = z]
mass [mass of the object] local for modeling
mass_units [kg/tons, fractional Earth mass, etc]
objtype [object type: asteroid, comet, planetoid, rocky, terra, gas] local to send to M.S., terrainRE
subtype [ex. rocky->mercurial, etc] local to send to M.S., terrainRE
objage [how old it is]
tmp-avg [average "surface" temperature]
atmo [array for renderer, color, opacity, reflictivity, will feed renderer parameters]
density [average density calculated from size and mass]
ele [primary elements]
bom [bombardment level, to determine crater count for terrain] to terrainRE
Object descriptors if spheroid
sa-a [Semi-axis on x axis]
sa-b [Semi-axis on y axis]
sa-z [Semi-axis on z axis]
If non-spheroid / IE asteroid
For large scale modeling, no data pull needed. For modeling Binary asteroids or rotations, there will be a dedicated script for converting asteroid into a density point cloud. Will work closely with terrain.
Internal Modeling -[might talk to geologyRE later, but some elements need to be in this reference engine for tidal force modeling]
dust[x, y, z, ion] clumped dust volumes into spatial model.
radCart[x,y,z, a, b, g, em] radiation map of the solar system
radObj[r, obj_id] [radiation level as a function of radius from an object]
Will there be types and subtypes for star bodies?
Also, I like making coordinate's (0,0,0) the barycenter of the system. It makes sense.
Yep, we might even need three or four tiers of "types." Thanks to the way Mongo's collections work, this should be less data intensive too! So take Betelgeuse for example:
Sub-Type: "Red supergiant"
Variable type: "SR c"
And of course stars have tons of other luminosity properties, but with the way Mongo stores stuff you wouldn't record any of that for non-star objects.
What will be really awesome is getting a really decent schema, getting our engine part another few paradigms ahead, and then ETL some realworld data into the system! There is so much data right now, the Minor Planet Center, SDSS, Simbad, plenty of stuff to pluck and render on the fly. And then your Clojureterrain can run procedural generation for unmappable exoplanets! It will be awesome!
Treat small bodies as volumetric units. Break up solar system into quadrants and have asteroid probability density as an object instead of tracking all small bodies themselves
Let me ask you this, in the above list of Attributes, which ones are "metrics" ? that is to say, which of these attributes are purely calculated, and not static? For example, in the generator, which ones would need to be generated?