document.addEventListener('DOMContentLoaded', function () { calculateLC(); calculateR(); calculateS(); }); function calculateLC() { const R = document.getElementById('input11').value; const S = document.getElementById('input12').value; const lC = R * (1 - Math.cos((28.65 * (S / R)) * Math.PI / 180)); document.getElementById('resultLC').innerText = lC.toFixed(2); } function calculateR() { const lC = parseFloat(document.getElementById('input21').value); const S = parseFloat(document.getElementById('input22').value); if (isNaN(lC) || lC <= 0 || isNaN(S) || S <= 0) { document.getElementById('resultR').innerText = "NaN"; return; } const equation = (R) => lC - R * (1 - Math.cos((28.65 * (S / R)) * Math.PI / 180)); const derivative = (R) => (Math.cos((28.65 * (S / R)) * Math.PI / 180) * (28.65 * S) / (R * R)); const initialGuesses = [300, 200, 100, 400, 500]; const tolerance = 1e-10; const maxIterations = 100000; let foundSolution = false; for (let guess of initialGuesses) { let R = guess; for (let i = 0; i < maxIterations; i++) { const f_R = equation(R); const f_prime_R = derivative(R); if (Math.abs(f_prime_R) < tolerance) { continue; } const new_R = R - f_R / f_prime_R; if (Math.abs(new_R - R) < tolerance) { document.getElementById('resultR').innerText = Math.max(new_R.toFixed(2), 20); foundSolution = true; return; } R = new_R; } } document.getElementById('resultR').innerText = "---"; } function calculateS() { const R = document.getElementById('input31').value; const lC = document.getElementById('input32').value; const angleRad = Math.acos(1 - (lC / R)); const S = (R * angleRad * 180) / (28.65 * Math.PI); document.getElementById('resultS').innerText = S.toFixed(0); } function showTab(tabId) { document.querySelectorAll('.tab-content').forEach(tab => { tab.classList.remove('active'); }); const activeTab = document.getElementById(tabId); activeTab.classList.add('active'); document.querySelectorAll('.tab').forEach(tab => { tab.classList.remove('active'); }); const activeTabElement = document.querySelector(`.tab[onclick*="${tabId}"]`); if (activeTabElement) { activeTabElement.classList.add('active'); } }