/** * Snapping Utilities * * Grid and angle snapping utilities for precision modeling */ import { Vector3 } from './transform'; export interface GridSnapOptions { /** * Grid size for snapping */ gridSize?: number; /** * Whether to enable snapping */ enabled?: boolean; /** * Which axes to snap (default: all) */ axes?: { x?: boolean; y?: boolean; z?: boolean; }; } export interface AngleSnapOptions { /** * Angle increment in degrees (e.g., 15 for 15-degree increments) */ angleIncrement?: number; /** * Whether to enable snapping */ enabled?: boolean; } /** * Snap a value to the nearest grid point */ export declare function snapToGrid(value: number, gridSize?: number): number; /** * Snap a 3D position to grid */ export declare function snapPositionToGrid(position: Vector3, options?: GridSnapOptions): Vector3; /** * Snap an angle to the nearest increment */ export declare function snapAngle(angle: number, options?: AngleSnapOptions): number; /** * Snap a rotation vector to angle increments */ export declare function snapRotationToAngles(rotation: Vector3, options?: AngleSnapOptions): Vector3; /** * Calculate grid size based on zoom level or scale */ export declare function calculateGridSize(baseGridSize?: number, zoomLevel?: number): number; /** * Get nearest grid point to a position */ export declare function getNearestGridPoint(position: Vector3, gridSize?: number): Vector3; /** * Get distance to nearest grid point */ export declare function getDistanceToGrid(position: Vector3, gridSize?: number): number; /** * Check if a position is close to a grid point */ export declare function isNearGridPoint(position: Vector3, gridSize?: number, tolerance?: number): boolean; //# sourceMappingURL=snapping_utils.d.ts.map