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>
