Public
Edited
Nov 20, 2022
Importers
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
launchYear = 2100
Insert cell
cycleZeroE = launchYear + shipsRaw[0].durationYears // Year when first ship landed, after traveling 60 years
Insert cell
Insert cell
Insert cell
cycleInEarthDays = planet.rotationInEarthDays
Insert cell
cycleInEarthYears = planet.rotationsInCycle * planet.rotationInEarthDays / earth.rotationsInCycle
Insert cell
cyclesInEarthMonth = cyclesInEarthYear / 12
Insert cell
cyclesInEarthQuarter = cyclesInEarthYear / 4
Insert cell
cyclesInEarthYear = 1 / cycleInEarthYears
Insert cell
Insert cell
ship = ships[3]
Insert cell
ships = shipsRaw.map(enrichShip)
Insert cell
shipsRaw = [
{
launchCrew: 45,
durationYears: 60,
arrivalCycleE: 0
},
{
launchCrew: 75,
durationYears: 40,
arrivalCycleE: 10
},
{
launchCrew: 120,
durationYears: 30,
arrivalCycleE: 20
},
{
launchCrew: 418,
durationYears: 18,
arrivalCycleE: 30,
gravityG: 0.3,
r: 70
},
{
launchCrew: 600,
durationYears: 14,
arrivalCycleE: 45,
gravityG: 0.3,
r: 70
},
{
launchCrew: 800,
durationYears: 14,
arrivalCycleE: 48,
gravityG: 0.3,
r: 70
},
{
launchCrew: 800,
durationYears: 14,
arrivalCycleE: 49,
gravityG: 0.3,
r: 70,
rpm: 0.5
},
{
launchCrew: 800,
durationYears: 14,
arrivalCycleE: 52,
gravityG: 0.3,
r: 70,
rpm: 0.5
}
]
Insert cell
function enrichShip(ship, i) {
const launchCycleE = ship.arrivalCycleE - ship.durationYears;
const d = (ship.r || 0) * 2
const circ = d * pi

return {
...ship,
i,
name: `G${i}`,
d,
circ,
launchCycleE,
launchCycle: launchCycleE * cyclesInEarthYear,
arrivalCycle: ship.arrivalCycleE * cyclesInEarthYear,
launchYear: cycleZeroE + launchCycleE,
arrivalYear: cycleZeroE + ship.arrivalCycleE,
duration: ship.durationYears * cyclesInEarthYear,
gravity: (ship.gravityG || 0) * g
};
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
star = proximaCentauri
Insert cell
Insert cell
proximaCentauri = enrichStar({
name: 'Centaur',
fullName: 'Proxima Centauri',
solarMass: 0.1221,
solarRadius: 0.1542
})
Insert cell
sol = enrichStar({
name: 'Sol',
fullName: 'Sol (Earth\'s sun)',
solarMass: 1,
solarRadius: 1
})
Insert cell
barnard = enrichStar({
name: 'Barnard',
fullName: 'Barnard\'s star',
solarMass: 0.144,
solarRadius: 0.196
})
Insert cell
Insert cell
function enrichStar (data) {
const radius = data.solarRadius * 696342 * kilo
return {
...data,

mass: data.solarMass * solarMass,
radius,
diameter: 2 * radius
}
}
Insert cell
Insert cell
Insert cell
planet = proximaCentauriB
Insert cell
function enrichPlanet(data) {
const distance = (data.distanceLy || 0) * ly
const radius = data.radiusE * earthRadius;
return {
...data,

distance,
distancePc: distance / pc,
mass: data.massE * earthMass,
orbitalSpeed: (data.orbitalSpeedKmh || 0) * kmh,
orbitalDistance: data.orbitalDistanceAu * au,
radius,
diameterE: data.radiusE,
diameter: 2 * radius,
gravity: data.gravityG
};
}
Insert cell
Insert cell
Insert cell
Insert cell
earth = enrichPlanet({
name: 'Earth',
fullName: 'Earth',
star: sol,
distanceLy: 0,
massE: 1,
orbitalSpeedKmh: 107.208,
orbitalDistanceAu: 1,
radiusE: 1,
gravityG: 1,
rotationsInCycle: 365.256363004,
rotationInEarthDays: 1
})
Insert cell
Insert cell
Insert cell
Insert cell
proximaCentauriB = enrichPlanet({
name: 'Hera',
fullName: 'Proxima Centauri b',
star: proximaCentauri,
distanceLy: 4.2,
massE: 1.173,
orbitalDistanceAu: 0.04856,
radiusE: 1.3,
gravityG: 1.0261,

// Tidally locked to star
rotationsInCycle: 1,
rotationInEarthDays: 11.2
})
Insert cell
Insert cell
Insert cell
Insert cell
barnardB = enrichPlanet({
name: 'Barnard b',
fullName: 'Barnard\s star b (GJ 669)',
distanceLy: 6,
massE: 3.23,
orbitalDistanceAu: 0.404,
radiusE: 1.25,
gravityG: 2.07,
rotationsInCycle: 20, // ???
rotationInEarthDays: 232.8
})
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more