slug: "latbs/tools"
lang: en
title: "Tools"
category: meta
pageCreated: "2024-04-03"
pageUpdated: "2025-11-08"
extends ../../../views/latbs/layout.pug
append cosmetics
link(rel="stylesheet", href="/latbs/tools/tools.css")
script(src="/cosmetics/d3.v7.min.js")
script(src="/latbs/tools/kepler.js")
block content
p Here are some useful tools i made for my own reference while worldbuilding. They are only loosely accurate and probably contain bugs and errors. If you are an astrophysicist and you use this to plan your mission it is your own fault if it crashes.
+h2("Communications time calculator")
p Three hundred million metres per second — it’s not just a good idea; it’s the law!
#commtimecalc.tool
div#commtimecalc-entry
| Sending a message from
select#commtimecalc-planet1(onchange="showCommTime()")
option(value="hermes") Hermes (Mercury)
option(value="venus") Venus
option(value="earth" selected) Earth
option(value="mars") Mars
option(value="ceres") Ceres
option(value="jupiter") Jupiter
option(value="saturn") Saturn
option(value="ouranos") Ouranos (Uranus)
option(value="neptune") Neptune
option(value="pluto") Pluto
option(value="haumea") Haumea
option(value="makemake") Makemake
option(value="persephone") Persephone (Eris)
option(value="sedna") Sedna
| to
select#commtimecalc-planet2(onchange="showCommTime()")
option(value="hermes") Hermes (Mercury)
option(value="venus") Venus
option(value="earth") Earth
option(value="mars" selected) Mars
option(value="ceres") Ceres
option(value="jupiter") Jupiter
option(value="saturn") Saturn
option(value="ouranos") Ouranos (Uranus)
option(value="neptune") Neptune
option(value="pluto") Pluto
option(value="haumea") Haumea
option(value="makemake") Makemake
option(value="persephone") Persephone (Eris)
option(value="sedna") Sedna
| at
input#commtimecalc-date(type="datetime-local" value="2558-05-26T12:00" min="1950-01-01T12:00" max="2600-01-01T12:00" onchange="showCommTime()")
| #[+sc("UT")] would take about…
strong#commtimecalc-daily-result 11 minutes, 42 seconds
div.table-container#commtimecalc-weekly-table
table
thead
tr
th(colspan=2) Other dates around then
tbody
tr
td 3 days ago
td: b 11m 51s
tr
td 2 days ago
td: b 11m 48s
tr
td Yesterday
td: b 11m 45s
tr
td Today
td: b 11m 42s
tr
td Tomorrow
td: b 11m 39s
tr
td In 2 days
td: b 11m 36s
tr
td In 3 days
td: b 11m 33s
+h2("Orrery")
#orrery-tool.tool
svg#orrery-plot
g#orrery-graticule
g#orrery-chart
g#orrery-orbits
g#orrery-circles
div#orrery-controls
label(for="orrery-date") Date
input#orrery-date(type="datetime-local" value="2558-05-26T12:00" min="1950-01-01T12:00" max="2600-01-01T12:00")
div#orrery-date-buttons
button.date-button.long-db(onclick='todayOrrDate();') Today
button.date-button.long-db(onclick='resetOrrDate();') 2558
button.date-button(onclick='shiftOrrDate(3652.5);') +10y
button.date-button(onclick='shiftOrrDate(365.25);') +1y
button.date-button(onclick='shiftOrrDate(30);') +30d
button.date-button(onclick='shiftOrrDate(1);') +1d
button.date-button(onclick='shiftOrrDate(-3652.5);') -10y
button.date-button(onclick='shiftOrrDate(-365.25);') -1y
button.date-button(onclick='shiftOrrDate(-30);') -30d
button.date-button(onclick='shiftOrrDate(-1);') -1d
label(for="orrery-perspective-slider") Perspective
div#orrery-perspective
input#orrery-perspective-slider(type="range" min="0" max="90" value="90")
div
div.orrery-dinkus#orrery-perspective-dinkus 90°
label(for="orrery-zoom") Zoom
div#orrery-zoom
div#orrery-zoom-dinkus-container
div.orrery-dinkus#orrery-zoom-dinkus 15 Tm
input#orrery-zoom-slider(type="range" min="11" max="13.5228787" step="any" list="orrery-zoom-list" value="12.69897")
datalist#orrery-zoom-list
option(value="13" label="Persephone")
option(value="12.69897" label="Pluto")
option(value="12.12493" label="Saturn")
option(value="11.8239" label="Jupiter")
option(value="11.30103" label="Earth")
+h2("Porkchop plotter")
p A porkchop plot shows how expensive a trip from one planet to another will be in terms of delta-#[var v]#[+sn(1)] depending on when you set out and when you arrive. This doesn’t matter so much in the outer system, where most transport is via titanic torqued-up torchships that can get you anywhere, any time, so long as you don’t point the exhaust the wrong way and kill millions of people, but in the inner system, where distances are comparatively lesser, ships less powerful, and waiting times not #[em so] bad, waiting for the right launch window is everything.
+sn(1)
p #[i A quick rocket-science digression:] delta-#[var v] is the total change in velocity your spacecraft needs to make over its mission. More delta-#[var v] means you’ll have to carry along exponentially more fuel, thanks to that bastard Tsiolkovsky and his rocket equation, so minimising it is important if you want to get off the ground.
p Note that since it represents the #[em total] change in velocity over the whole trip, rather than the rate of change, it’s measured in plain old metres per second, rather than metres per second squared. If you want to convert that into miles or astronomical units or Martian secs or hours, please direct all inquiries into the nearest graveyard orbit.
#porkchop.tool
div#porkchop-entry
| I would like to get from
select#porkchop-planet1
option(value="hermes") Hermes (Mercury)
option(value="venus") Venus
option(value="earth" selected) Earth
option(value="mars") Mars
option(value="ceres") Ceres
option(value="jupiter") Jupiter
option(value="saturn") Saturn
option(value="ouranos") Ouranos (Uranus)
option(value="neptune") Neptune
option(value="pluto") Pluto
option(value="haumea") Haumea
option(value="makemake") Makemake
option(value="persephone") Persephone (Eris)
option(value="sedna") Sedna
| to
select#porkchop-planet2
option(value="hermes") Hermes (Mercury)
option(value="venus") Venus
option(value="earth") Earth
option(value="mars" selected) Mars
option(value="ceres") Ceres
option(value="jupiter") Jupiter
option(value="saturn") Saturn
option(value="ouranos") Ouranos (Uranus)
option(value="neptune") Neptune
option(value="pluto") Pluto
option(value="haumea") Haumea
option(value="makemake") Makemake
option(value="persephone") Persephone (Eris)
option(value="sedna") Sedna
| , departing in
input#porkchop-departure(type="number" value="2020" min="1950" max="2600" step="1")
| .
button#porkchop-calculate(onclick="showPorkchop()") Calculate
svg#porkchop-plot