Kupola Geodetskih Kalkulator
Programski kod:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Kupola Kalkulator</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container py-5"> <h1 class="mb-4 text-center">Kupola Geodetskih Kalkulator</h1> <form id="kupolaForm"> <div class="row mb-3"> <div class="col-md-3"> <label for="frequency" class="form-label">Frekvencija</label> <select class="form-select" id="frequency" required></select> </div> <div class="col-md-3"> <label for="radius" class="form-label">Poluprečnik (cm)</label> <input type="number" class="form-control" id="radius" required> </div> <div class="col-md-3"> <label for="width" class="form-label">Širina letve (cm)</label> <input type="number" class="form-control" id="width" required> </div> <div class="col-md-3"> <label for="height" class="form-label">Visina letve (cm)</label> <input type="number" class="form-control" id="height" required> </div> </div> <button type="submit" class="btn btn-primary">Izračunaj</button> </form> <div id="results" class="mt-5" style="display:none"> <h3>Rezultati</h3> <table class="table table-bordered"> <thead> <tr><th>Oznaka</th><th>Dužina (cm)</th><th>Količina</th></tr> </thead> <tbody id="strutsTable"></tbody> </table> <p><strong>Ukupna dužina letvi:</strong> <span id="totalLength"></span> m</p> <p><strong>Kubikaža:</strong> <span id="volume"></span> m³</p> <h4>Konektori</h4> <ul id="connectorsList"></ul> </div> </div> <script> const STRUT_FACTORS = { "1V": {"A": {"factor": 1.05146, "count": 25}}, "2V": {"A": {"factor": 0.61803, "count": 35}, "B": {"factor": 0.54653, "count": 30}}, "3V 3/8": {"A": {"factor": 0.34862, "count": 30}, "B": {"factor": 0.40355, "count": 40}, "C": {"factor": 0.41241, "count": 50}}, "3V 5/8": {"A": {"factor": 0.34862, "count": 30}, "B": {"factor": 0.40355, "count": 55}, "C": {"factor": 0.41241, "count": 80}}, "4V": {"A": {"factor": 0.25318, "count": 30}, "B": {"factor": 0.29524, "count": 30}, "C": {"factor": 0.29453, "count": 60}, "D": {"factor": 0.31287, "count": 70}, "E": {"factor": 0.32492, "count": 30}, "F": {"factor": 0.29859, "count": 30}}, "5V 3/8": {"A": {"factor": 0.19814743, "count": 30}, "B": {"factor": 0.23179025, "count": 30}, "C": {"factor": 0.22568578, "count": 60}, "D": {"factor": 0.24724291, "count": 60}, "E": {"factor": 0.25516701, "count": 50}, "F": {"factor": 0.24508578, "count": 50}, "G": {"factor": 0.26159810, "count": 30}, "H": {"factor": 0.2153537, "count": 65}, "I": {"factor": 0.2166282, "count": 60}}, "5V 5/8": {"A": {"factor": 0.19814743, "count": 30}, "B": {"factor": 0.23179025, "count": 30}, "C": {"factor": 0.22568578, "count": 60}, "D": {"factor": 0.24724291, "count": 70}, "E": {"factor": 0.25516701, "count": 70}, "F": {"factor": 0.24508578, "count": 80}, "G": {"factor": 0.26159810, "count": 35}, "H": {"factor": 0.2153537, "count": 65}, "I": {"factor": 0.2166282, "count": 60}}, "6V": {"A": {"factor": 0.1625672, "count": 30}, "B": {"factor": 0.1904769, "count": 30}, "C": {"factor": 0.1819083, "count": 60}, "D": {"factor": 0.2028197, "count": 90}, "E": {"factor": 0.1873834, "count": 30}, "F": {"factor": 0.1980126, "count": 60}, "G": {"factor": 0.2059077, "count": 130}, "H": {"factor": 0.2153537, "count": 65}, "I": {"factor": 0.2166282, "count": 60}} }; const CONNECTORS = { "1V": [["4 kraka", 5], ["5 kraka", 6]], "2V": [["4 kraka", 10], ["5 kraka", 6], ["6 kraka", 10]], "3V 3/8": [["4 kraka", 15], ["5 kraka", 6], ["6 kraka", 25]], "3V 5/8": [["4 kraka", 15], ["5 kraka", 6], ["6 kraka", 40]], "4V": [["4 kraka", 20], ["5 kraka", 6], ["6 kraka", 65]], "5V 3/8": [["4 kraka", 25], ["5 kraka", 6], ["6 kraka", 95]], "5V 5/8": [["4 kraka", 25], ["5 kraka", 6], ["6 kraka", 120]], "6V": [["4 kraka", 30], ["5 kraka", 6], ["6 kraka", 160]] }; const form = document.getElementById("kupolaForm"); const frequencySelect = document.getElementById("frequency"); const resultsDiv = document.getElementById("results"); const strutsTable = document.getElementById("strutsTable"); const totalLength = document.getElementById("totalLength"); const volume = document.getElementById("volume"); const connectorsList = document.getElementById("connectorsList"); for (let freq in STRUT_FACTORS) { let option = document.createElement("option"); option.value = freq; option.textContent = freq; frequencySelect.appendChild(option); } form.addEventListener("submit", function (e) { e.preventDefault(); const frequency = frequencySelect.value; const radius = parseFloat(document.getElementById("radius").value); const width = parseFloat(document.getElementById("width").value); const height = parseFloat(document.getElementById("height").value); const struts = STRUT_FACTORS[frequency]; strutsTable.innerHTML = ""; let total_cm = 0; for (let label in struts) { const length = +(struts[label].factor * radius).toFixed(2); const count = struts[label].count; total_cm += length * count; const row = `<tr><td>${label}</td><td>${length}</td><td>${count}</td></tr>`; strutsTable.insertAdjacentHTML("beforeend", row); } const total_m = (total_cm / 100).toFixed(2); const volume_m3 = ((total_cm * width * height) / 1_000_000).toFixed(3); totalLength.textContent = total_m; volume.textContent = volume_m3; connectorsList.innerHTML = ""; for (let [type, count] of CONNECTORS[frequency]) { connectorsList.insertAdjacentHTML("beforeend", `<li>${type} - ${count} kom.</li>`); } resultsDiv.style.display = "block"; }); </script> </body> </html>