/** * FrustumCuller.ts * * Frustum culling: 6-plane frustum extraction, AABB/sphere tests, * batch culling, and visibility sets. * * @module spatial */ import { Vector3 } from './SpatialTypes'; export interface Plane4 { a: number; b: number; c: number; d: number; } export interface BoundingVolume { id: string; type: 'aabb' | 'sphere'; center: Vector3; halfExtents?: Vector3; radius?: number; } type BoundingVolumeInput = BoundingVolume & { centerX?: number; centerY?: number; centerZ?: number; halfExtentX?: number; halfExtentY?: number; halfExtentZ?: number; }; export type CullResult = 'inside' | 'intersect' | 'outside'; export declare class FrustumCuller { private planes; private volumes; private visibleSet; setFrustumFromPerspective(fovDeg: number, aspect: number, near: number, far: number, eyeX: number, eyeY: number, eyeZ: number, lookX: number, lookY: number, lookZ: number): void; setPlanes(planes: Plane4[]): void; getPlaneCount(): number; addVolume(volume: BoundingVolumeInput): void; removeVolume(id: string): void; getVolumeCount(): number; testSphere(cx: number, cy: number, cz: number, radius: number): CullResult; testAABB(cx: number, cy: number, cz: number, hx: number, hy: number, hz: number): CullResult; cullAll(): string[]; isVisible(id: string): boolean; getVisibleCount(): number; } export {}; //# sourceMappingURL=FrustumCuller.d.ts.map