/** * Pure geometry helpers for GroundTrackMapLeaflet. * Used for antimeridian splitting, geodesic circles, and world copies. * Longitudes are normalized to [-180, 180] where required. */ /** Normalize longitude to [-180, 180]. */ export declare function wrapLon(lon: number): number; /** Normalize an array of [lat, lon] so all longitudes are in [-180, 180]. */ export declare function normalizeLatLngs(points: [number, number][]): [number, number][]; /** * Split a polyline at the antimeridian (±180°). * Input points should be normalized (wrapLon) so crossing is detected correctly. * No segment will contain consecutive points with |dLon| > 180 (avoids vertical line at date line). */ export declare function splitPolylineAtAntimeridian(points: [number, number][]): [number, number][][]; /** Return each segment plus world copies at lon ± 360. */ export declare function segmentsWithWorldCopies(segments: [number, number][][]): [number, number][][]; /** Geodesic circle as lat/lon polygon (for coverage that looks correct at all latitudes). */ export declare function geodesicCirclePoints(centerLat: number, centerLon: number, radiusDeg: number, numPoints?: number): [number, number][]; /** * Geodesic circle with continuous (unwrapped) longitudes. * All output longitudes stay within ±180° of centerLon, producing a single * clean polygon that never jumps across the antimeridian. * Leaflet renders out-of-range longitudes correctly, so no splitting is needed. */ export declare function geodesicCirclePointsContinuous(centerLat: number, centerLon: number, radiusDeg: number, numPoints?: number): [number, number][]; /** * Split a closed ring (e.g. geodesic circle) at ±180° so each part can be drawn without wrapping. * Returns one ring if the circle does not cross the date line, or two closed rings (east/west) if it does. */ export declare function splitRingAtAntimeridian(ring: [number, number][]): [number, number][][];