App Documentation

Two visualization tools built on the wabis / jsgraph engine.

Flat Earth Dome Model

Open app →

Interactive 3D simulation of the flat earth dome cosmology. Shows how the sun, moon and stars move over a flat disc with a dome, and compares predicted shadows and eclipses to real astronomical events.

Playback animation Day / night cycle Solar & lunar eclipses Equinox / solstice scenarios Observer position Date & time picker

Canvas controls

InputAction
DragRotate view around the scene
Two-finger pinchZoom in / out
Scroll wheelZoom in / out
Ctrl + dragMove observer position on the flat earth
Move button (⊕) + dragMove observer (alternative to Ctrl-drag)

Top bar

ElementWhat it does
▶ / ⏸ PlayStart or pause the time animation
⏮ / ⏭ StepStep one cycle backward or forward
↺ ResetReturn to the initial state
Speed buttonCycle through animation speeds (click forward, Shift-click back)
Demo tabs (Intro … Stars)Load a preset scenario; each unlocks a guided sub-demo sequence
☀ Eclipse tabJump directly to the total solar eclipse scenario

Timeline strip

ElementWhat it does
Mode button (1h / 1d / 1y)Switch the scrubber range between one hour, one day, or one year
ScrubberDrag to jump to any point in the selected range

Date & time picker (top-right)

Scroll or click the ▲▼ arrows on each field (month, day, year, hour, minute) to set the simulation date. The sun ☀ and moon ☾ azimuth / elevation update live below the picker.

Bottom bar — layer toggles

ButtonToggles
GridFlat earth grid lines
DomeDome hemisphere wireframe
ShadowShadow cone cast by the moon
P·DomePersonal dome (observer-relative sky sphere)
Sun / Moon / StarsShow or hide each luminary
OrbitsSun and moon orbital tracks
D·RaysDome light rays from the sun
P·RaysParallel rays on the personal dome

Parameter sliders (desktop, bottom-right)

SliderControls
M.EclMoon ecliptic angle (±90°)
☀DistSun distance (log scale, km)
DomeHDome height (km)
DomeSzDome size (× FE radius)
RayPRay convergence parameter

Earth Curvature Calculator

Open app →

Calculates and visualizes how much of a distant target is hidden below the horizon from a given observer altitude, comparing the globe earth and flat earth models side by side, with optional atmospheric refraction.

Globe vs. flat earth Atmospheric refraction Two targets Metric & imperial units URL state sharing Screenshot export

Bottom bar

ButtonOpens panel
📐 MeasuresObserver height, target distance & size, view angle
🔬 OpticsRefraction model (standard, custom, off)
📊 DataRead-only results: hidden height, horizon distance, etc.
Globe / FE / BothSwitch which model(s) are drawn on the canvas
UnitsSwitch between metric and imperial

Panel drawer (slides up from bottom)

Tap any section button to open the drawer. Inside, each section is collapsible. Tap the section title to expand or collapse it. Tap the ▼ button at the bottom to close the drawer.

Measures panel

FieldDescription
Observer heightEye height above the surface
Target distanceHorizontal distance to the target
Target heightTotal height of the target object
View angleVertical tilt of the camera

Optics panel

SettingEffect
Standard refractionApplies the standard 7/6 earth-radius refraction model
Custom kSet a custom refraction coefficient
OffNo refraction (geometric only)

Distance Data panel (read-only results)

FieldMeaning
Hidden heightHow much of the target is below the horizon line
Horizon distanceDistance to the optical horizon from the observer
DropGeometric earth drop over the target distance
BulgeMid-distance bulge (sagitta)

Top bar

ButtonAction
📷 ScreenshotSave the current canvas as a PNG file

Sharing a scenario

The full app state is encoded in the URL (via DataX). Copy the address bar to share the exact configuration with someone else, or bookmark it to return later.

Developer setup

Requirements

Commands

pnpm install                              # install workspace deps
pnpm dev                                  # serve both apps (Vite root)
pnpm --filter fed-wabis dev               # serve only fed-wabis
pnpm --filter earth-drop-calc dev         # serve only drop-calc
pnpm build                                # build → dist/ (GitHub Pages)
pnpm preview                              # preview dist/ locally
pnpm characterize                         # safety net: math + canvas snapshots
pnpm lint                                 # ESLint
⚠ Do not open index.html directly (file://) — bare ESM specifiers only resolve under Vite.

Repo structure

apps/
  earth-drop-calc/    Curvature / drop calculator
  fed-wabis/          Flat Earth Dome Model
packages/
  jsgraph-vendor/     Shared wabis engine + design tokens