This is a flat-projection take on the same brown-dwarf weather physics as the 3D version: instead of instancing cloud patches over a rendered sphere, the whole photosphere is unrolled once into an equirectangular longitude/latitude grid (a weather map, exactly like a map of a planet), and a cloud density field is baked onto that grid with coherent value noise. A sub-observer point — the spot on the map directly facing you — sweeps horizontally across the map as the body spins, and its latitude is fixed by the inclination slider:
lat_sub = 90° − inclination (pole-on → lat_sub = 90°, equator-on → lat_sub = 0°)
cos(sep) = sin(lat)·sin(lat_sub) + cos(lat)·cos(lat_sub)·cos(lon − lon_sub(t))
F(t)/F₀ = 1 − A · Σ_cloudy max(0, cos(sep))·w_cell / N_eff
w_cell = cos(lat)·Δlat·Δlon (solid-angle weight of a grid cell)
N_eff = (Σ_all w_cell) / 4 (average visible-hemisphere projection, ≈ π)
This is the same disk-integrated-brightness quadrature real photometric surveys use for rotators like Luhman 16B — computed here as an explicit numerical sum over a 2D grid field, not a 3D scene rendered from a camera. Because lat_sub reaches exactly 90° at inclination 0°, the visibility cap becomes a fixed circle around the pole and the light curve correctly flattens to zero amplitude pole-on — the behaviour this page's own theory text describes.
- Rotation period — how fast the sub-observer marker sweeps left→right across the map.
- Cloud coverage — the noise field is thresholded so this fraction of grid cells (by solid angle) is cloudy.
- Viewing inclination — sets the sub-observer latitude; near 0° the visibility cap sits on the pole and barely changes shape as it rotates in longitude, so variability vanishes; near 90° the cap rides the equator and sweeps through maximal contrast.
- Cloud/clear contrast — direct multiplier on light-curve amplitude.