import { NodeId, Position, Size, Bounds } from '../../../../../types/core'; /** * Data stored in quadtree leaf nodes */ export type QuadTreeNodeData = { id: NodeId; position: Position; size: Size; mass: number; }; /** * Quadtree node structure for Barnes-Hut algorithm */ export type QuadTreeNode = { bounds: Bounds; centerOfMass: Position; totalMass: number; children: [QuadTreeNode | null, QuadTreeNode | null, QuadTreeNode | null, QuadTreeNode | null] | null; data: QuadTreeNodeData | null; nodeCount: number; }; /** * QuadTree class for Barnes-Hut force calculation */ export declare class QuadTree { private root; private theta; /** * Create a new QuadTree * @param bounds - Initial bounds of the tree * @param theta - Barnes-Hut accuracy parameter (0.5-1.0, lower = more accurate) */ constructor(bounds: Bounds, theta?: number); /** * Insert a node into the quadtree */ insert(id: NodeId, position: Position, size: Size): void; /** * Recursively insert data into a node */ private insertIntoNode; /** * Calculate repulsion force on a target node from all other nodes * Uses Barnes-Hut approximation for distant node clusters */ calculateRepulsionForce(targetId: NodeId, targetPos: Position, targetSize: Size, repulsionStrength: number, sizeAware: boolean): Position; /** * Recursively calculate force from a quadtree node */ private calculateForceRecursive; /** * Calculate repulsion force between two bodies */ private calculateSingleBodyForce; } /** * Calculate bounds that encompass all nodes with padding */ export declare function calculateBounds(positions: Map, sizes: Map, padding?: number): Bounds;