import { Vec3 } from '../math/Mat4'; /** * Orbit camera for 3D scene navigation. * Uses spherical coordinates (theta, phi, radius) around a target point. */ import * as Mat4 from '../math/Mat4'; export interface OrbitCameraOptions { target?: Vec3; radius?: number; theta?: number; phi?: number; fov?: number; near?: number; far?: number; minRadius?: number; maxRadius?: number; minPhi?: number; maxPhi?: number; } export declare class OrbitCamera { target: Vec3; radius: number; theta: number; phi: number; fov: number; aspect: number; near: number; far: number; minRadius: number; maxRadius: number; minPhi: number; maxPhi: number; private viewMatrix; private projMatrix; private viewProjMatrix; private dirty; private eye; constructor(options?: OrbitCameraOptions); /** * Set aspect ratio (width / height). */ setAspect(aspect: number): void; /** * Rotate camera by delta angles. */ rotate(deltaTheta: number, deltaPhi: number): void; /** * Zoom camera by delta radius (positive = zoom out). */ zoom(delta: number): void; /** * Zoom by factor (1 = no change, <1 = zoom in, >1 = zoom out). */ zoomFactor(factor: number): void; /** * Pan camera target by world-space delta. */ pan(deltaX: number, deltaY: number): void; /** * Set target position directly. */ setTarget(x: number, y: number, z: number): void; /** * Set camera position from spherical coordinates. */ setSpherical(theta: number, phi: number, radius: number): void; /** * Update matrices if dirty. */ private updateMatrices; /** * Get view matrix. */ getViewMatrix(): Mat4.Mat4; /** * Get projection matrix. */ getProjectionMatrix(): Mat4.Mat4; /** * Get combined view-projection matrix. */ getViewProjectionMatrix(): Mat4.Mat4; /** * Get current eye position. */ getEyePosition(): Vec3; /** * Get forward direction (normalized). */ getForwardDirection(): Vec3; /** * Reset camera to default position. */ reset(): void; /** * Fit camera to view a bounding box. */ fitToBounds(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): void; }