/** * Pure, DOM-free layout math for the vz-hub lobby: distribute N content panels * around the viewer as {lat, lon} positions (degrees), so the placement can be * unit-tested without a renderer. Panels sit at eye level (lat 0) and are * centered on dead-ahead (lon 0); once the arc would wrap past ~330° they * spread evenly around a full ring instead. */ export interface HubPanelPosition { /** Vertical angle in degrees (0 = eye level). */ lat: number; /** Horizontal angle in degrees, normalized to [-180, 180] (0 = dead ahead). */ lon: number; } export interface HubLayoutOptions { /** Degrees between adjacent panels in the front-arc layout. */ spacingDeg?: number; /** Eye-level offset for all panels. */ lat?: number; } /** Normalize an angle in degrees to the range [-180, 180]. */ export declare function normalizeLon(lon: number): number; export declare function hubPanelLayout(count: number, opts?: HubLayoutOptions): HubPanelPosition[]; //# sourceMappingURL=hub-layout.d.ts.map