import * as THREE from 'three'; import { BaseScatterSystem, BaseScatterConfig, ChunkData } from '../core'; /** * Configuration for spline-based scatter */ export interface SplineScatterConfig extends BaseScatterConfig { /** Spline curve to scatter along */ spline: THREE.CatmullRomCurve3 | THREE.CubicBezierCurve3 | THREE.QuadraticBezierCurve3; /** Distribution mode */ distributionMode?: 'uniform' | 'adaptive' | 'density-based'; /** Number of segments along spline */ segmentCount?: number; /** Alternative: spacing between instances */ spacing?: number; /** Tension for CatmullRom curves */ tension?: number; /** Width perpendicular to spline */ width?: number; /** Instances per segment for width distribution */ distributionsPerSegment?: number; /** Bank angle on curves (radians) */ bankAngle?: number; /** Orient along spline direction */ followTangent?: boolean; /** Custom up vector */ upVector?: THREE.Vector3; /** Custom offset function based on t (0-1) */ offsetCurve?: (t: number) => number; } /** * Scatter system with advanced spline features including banking and Frenet frames */ export declare class SplineScatterSystem extends BaseScatterSystem { private spline; private distributionMode; private segmentCount; private spacing?; private tension; private width; private distributionsPerSegment; private bankAngle; private followTangent; private upVector; private offsetCurve?; private splinePoints; private splineTangents; private splineNormals; private splineBinormals; constructor(config: SplineScatterConfig); protected initializeDistribution(): Promise; private generateSplineData; private generateAdaptivePoints; private generateDensityBasedPoints; private calculateFrenetFrame; protected updateChunks(): void; protected populateChunk(chunk: ChunkData, centerX: number, centerZ: number): void; /** * Update the spline and regenerate */ updateSpline(spline: THREE.CatmullRomCurve3 | THREE.CubicBezierCurve3 | THREE.QuadraticBezierCurve3, segmentCount?: number): void; /** * Set the bank angle and regenerate */ setBankAngle(angle: number): void; } //# sourceMappingURL=SplineScatterSystem.d.ts.map