import type * as THREE from "three"; import type { ThreeParts } from "../realistic/textures.ts"; import { type PathStyle } from "./paths.ts"; type Three = ThreeParts; /** Points on each orbit loop. The same as the chosen orbit has always had. */ export declare const PATH_POINTS = 120; /** The paths the mesh can hold: those of the page and the chosen satellite's own. */ export declare const PATH_SLOTS: number; /** * The distance, in kilometres, over which the orbit of a satellite being ridden grows out of the camera: nothing at the camera, all of its look by this far along the path (a smooth step in between). * * @example * ```ts * import { RIDE_PATH_FADE_KM } from "@johnmorrisdotca/chikyu-earth/space"; * * console.log(RIDE_PATH_FADE_KM); // 300 * ``` */ export declare const RIDE_PATH_FADE_KM = 300; /** What one slot is told: the loop's points (3 numbers each, {@link PATH_POINTS} of them) and its look. */ export interface RibbonPath { positions: Float32Array; style: PathStyle; /** Earth radii from the camera over which the path fades in (nothing at the camera, all of its opacity at this distance); 0 or missing draws it at its look everywhere. */ fade?: number; } export interface PathRibbons { /** Write the paths into the buffers, none for an empty list. Costs nothing on the GPU until the next draw, and nothing is drawn while there are no paths. */ set(paths: readonly RibbonPath[]): void; /** The size of the picture in CSS pixels and the Earth's radius on it, which a dash is measured against. */ frame(width: number, height: number, earthPx: number): void; /** How many paths are in the buffers. */ readonly count: number; readonly mesh: THREE.Mesh; dispose(): void; } export declare function createPathRibbons(three: Three, scene: THREE.Object3D): PathRibbons; export {};