Acoustic Diffraction Converter
Diffraction Results
Fresnel Number: ${fresnelNumber.toFixed(2)}
Diffraction Effect: ${diffractionEffect}
`; document.getElementById('result-values').innerHTML = resultHTML; visualizeWave(obstacleWidth, wavelength); document.getElementById('results').style.display = 'block'; } function visualizeWave(obstacleWidth, wavelength) { const visual = document.getElementById('result-visual'); visual.innerHTML = ''; const waveContainer = document.createElement('div'); waveContainer.className = 'wave-visualization'; // Create obstacle const obstacle = document.createElement('div'); obstacle.style.position = 'absolute'; obstacle.style.left = '40%'; obstacle.style.width = `${Math.min(obstacleWidth * 50, 300)}px`; obstacle.style.height = '100%'; obstacle.style.backgroundColor = '#333'; waveContainer.appendChild(obstacle); // Create wave visualization const waveCount = Math.min(Math.floor(200 / wavelength), 20); for (let i = 0; i < waveCount; i++) { const wave = document.createElement('div'); wave.style.position = 'absolute'; wave.style.left = `${i * wavelength * 10}px`; wave.style.top = '50%'; wave.style.width = `${wavelength * 5}px`; wave.style.height = '2px'; wave.style.backgroundColor = '#4e73df'; wave.style.borderRadius = '1px'; waveContainer.appendChild(wave); } visual.appendChild(waveContainer); } function generatePDF() { try { // Use the properly scoped jsPDF constructor const { jsPDF } = window.jspdf; const doc = new jsPDF(); // Add title doc.setFontSize(18); doc.text('Acoustic Diffraction Report', 105, 15, { align: 'center' }); // Add current date doc.setFontSize(10); doc.text(`Generated: ${new Date().toLocaleString()}`, 105, 25, { align: 'center' }); // Add input parameters doc.setFontSize(12); doc.text('Input Parameters:', 14, 35); doc.text(`Frequency: ${document.getElementById('frequency').value} Hz`, 20, 45); doc.text(`Obstacle Width: ${document.getElementById('obstacle-width').value} m`, 20, 55); doc.text(`Distance: ${document.getElementById('distance').value} m`, 20, 65); // Add results doc.setFontSize(14); doc.text('Calculation Results:', 14, 80); const results = document.getElementById('result-values').textContent; const lines = results.split('\n').filter(line => line.trim() !== ''); let yPosition = 90; lines.forEach(line => { doc.text(line.trim(), 20, yPosition); yPosition += 7; }); // Add note about visualization doc.text('Note: Wave visualization is available in the web version.', 14, yPosition + 10); // Save the PDF doc.save('Acoustic_Diffraction_Report.pdf'); } catch (error) { console.error('PDF generation error:', error); alert('PDF generation failed. Please try again or check your internet connection.'); } }