import { CoursePhysics } from '../types/course'; import { Path } from '../types/path'; /** * Main simulation service for virtualizing GPS routes with physics-based cycling. * * This service transforms a static GPS route into a realistic cycling simulation by: * - Computing optimal speeds for all terrain/power combinations * - Integrating physics equations over time * - Aligning simulated trajectory with GPS waypoints * - Back-calculating cyclist power from speed changes * * ## Algorithm Overview * * 1. **Time-stepping loop**: Integrate physics from start to finish * - Calculate power balance at each step * - Determine distance traveled * - Align with GPS waypoints or interpolate * - Enforce maximum speed constraints * 2. **Post-processing**: Back-calculate cyclist power from speed profile * * ## GPS Waypoint Alignment * * The simulation stays on the actual GPS route by: * - Using binary search to find current segment * - Snapping to waypoints when crossing them * - Interpolating position between waypoints * * This ensures the virtual cyclist follows the exact recorded path. * * @see PowerComputer */ export declare class VirtualizeService { private static readonly powerComputer; /** * Virtualizes a GPS track using physics-based simulation. * * Transforms a static GPS route into a realistic cycling simulation with: * - Accurate time predictions based on power and terrain * - Speed profiles that respect physics and max speed limits * - Power estimates from speed changes * * The original path points are replaced with simulated points that have * physically consistent speeds, times, and power values. * * @param course Course configuration with path, cyclist, and bike parameters * @param startTime Simulation start timestamp in milliseconds (defaults to now when null/undefined) */ static virtualizeTrack(course: CoursePhysics, startTime?: number | null): Path; } //# sourceMappingURL=VirtualizeService.d.ts.map