Sprint Speed & Acceleration Analyzer

Input your split times from a sprint to analyze your performance. The tool will calculate your speed and acceleration for each segment.

Enter Split Times

${peakSpeed.toFixed(2)} m/s

Peak Acceleration

${peakAcceleration.toFixed(2)} m/s²

Split Details

${tableRows}
Segment Speed Acceleration

Performance Chart

${chartHTML}
`; resultsContainer.innerHTML = resultsHTML; document.getElementById('download-pdf-btn').addEventListener('click', downloadPdf); } // --- PDF GENERATION --- function downloadPdf() { if (!analysisData) return; const { jsPDF } = window.jspdf; const doc = new jsPDF(); const peakSpeed = Math.max(...analysisData.map(d => d.speed)); const peakAcceleration = Math.max(...analysisData.map(d => d.acceleration)); // Header doc.setFontSize(22); doc.setFont('helvetica', 'bold'); doc.text('Sprint Performance Analysis', 105, 20, { align: 'center' }); // Summary doc.setFontSize(12); doc.setFont('helvetica', 'normal'); doc.text(`Report Generated: ${new Date().toLocaleDateString()}`, 20, 35); doc.setFontSize(14); doc.text(`Peak Speed: ${peakSpeed.toFixed(2)} m/s`, 20, 45); doc.text(`Peak Acceleration: ${peakAcceleration.toFixed(2)} m/s²`, 20, 52); // Table const tableData = analysisData.map(d => [d.segment, d.speed.toFixed(2), d.acceleration.toFixed(2)]); doc.autoTable({ startY: 60, head: [['Segment', 'Speed (m/s)', 'Acceleration (m/s²)']], body: tableData, theme: 'grid', headStyles: { fillColor: [79, 70, 229] }, // Indigo }); doc.save('Sprint-Analysis.pdf'); } // --- EVENT LISTENERS --- calculateBtn.addEventListener('click', analyzePerformance); updateRemoveButtons(); // Initial call });
Scroll to Top