import type * as THREE from "three"; import type { BodyDrawing } from "./scene.ts"; /** * What a generic drawing shows: `bus` a box with two framed solar panels, `communications` the same with a dish on its nadir face, `flat` a flat body with one long framed panel (the shape of a large constellation's satellites), `station` a row of modules with a truss and panels, `cubesat` a slim box (a 3U, three times as long as it is wide) with short deployed panels. * * @example * ```ts * import type { SatelliteKind } from "@johnmorrisdotca/chikyu-earth/space"; * * const kinds: SatelliteKind[] = ["bus", "communications", "flat", "station", "cubesat"]; * console.log(kinds.length); * ``` */ export type SatelliteKind = "bus" | "communications" | "flat" | "station" | "cubesat"; /** * Which kind of drawing a satellite gets, from its name: a large constellation (`STARLINK`, `ONEWEB`, `KUIPER`) is `flat`, a cubesat (`FLOCK`, `DOVE`, `LEMUR`, `SPIRE` and similar names) is `cubesat`, a station (`ISS`, `ZARYA`, `TIANGONG`, `CSS`) is `station`, a communications satellite (by the common operators' names) has a dish, and anything else is a plain `bus`. * * @param name - The satellite's name (the element set's `OBJECT_NAME`). * @returns The kind. * * @example * ```ts * import { satelliteKind } from "@johnmorrisdotca/chikyu-earth/space"; * * console.log(satelliteKind("STARLINK-1007"), satelliteKind("ISS (ZARYA)"), satelliteKind("INTELSAT 39"), satelliteKind("NOAA 19")); * ``` */ export declare function satelliteKind(name: string): SatelliteKind; /** How bright the Sun is on a generic drawing. */ export declare const SUN_INTENSITY = 3.2; /** * A generic satellite as a drawing of radius 1 about the origin, its long axis along +x (the way it flies), its top along +z and its left along +y, the family's convention for a model, with its own light that `light(toSun)` turns to the Sun. One group of a few meshes, made once and disposed with `dispose`. * * @param three - three.js (the parts the demo's subset holds: `Group`, `Mesh`, `BoxGeometry`, `CylinderGeometry`, `MeshLambertMaterial`, `DirectionalLight`, `AmbientLight`). * @param kind - What to draw. * @param shared - A Sun light the scene owns (`{ sun }`), in the scene's own axes: the drawing then makes none of its own and `light` points that one. A scene with the light always in it keeps the same number of lights whether or not a drawing is shown, so three keeps one program for each material, not one for each state of the lights. * @returns The drawing, with `light` and `dispose`. * * @example * ```ts no-run * import { genericSatellite } from "@johnmorrisdotca/chikyu-earth/space"; * * const three = await import("three"); * const drawing = genericSatellite(three, "communications"); * console.log(drawing.object.children.length); * drawing.dispose(); * ``` */ export declare function genericSatellite(three: typeof THREE, kind: SatelliteKind, shared?: { sun: THREE.DirectionalLight; }): BodyDrawing;