Last active
September 16, 2024 10:05
-
-
Save anartzdev/2d7971ff3784da399252134f370c7f46 to your computer and use it in GitHub Desktop.
Calculadora VAM
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="es"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Calculadora VAM</title> | |
</head> | |
<body> | |
<h2>Calculadora de Zonas VAM</h2> | |
<label for="ritmo">Introduce tu ritmo (MM:SS min/km):</label> | |
<input type="text" id="ritmo" placeholder="Ej. 5:30"> | |
<img src="https://www.sergiosanchez.es/wp-content/uploads/2019/07/zonas-pallare%CC%81s.png" /> | |
<button onclick="calcularZonas()">Calcular Zonas</button> | |
<h3>Resultados</h3> | |
<ul id="resultados"></ul> | |
<script> | |
// Función para convertir el ritmo en formato MM:SS a minutos decimales | |
function convertirRitmoADecimal(ritmo) { | |
const partes = ritmo.split(':'); | |
const minutos = parseInt(partes[0]); | |
const segundos = parseInt(partes[1]); | |
return minutos + (segundos / 60); | |
} | |
// Función para convertir minutos decimales a formato MM:SS | |
function formatoTiempo(ritmo) { | |
let minutos = Math.floor(ritmo); | |
let segundos = Math.round((ritmo - minutos) * 60); | |
if (segundos < 10) { | |
segundos = '0' + segundos; // Añadir un cero si es menor de 10 | |
} | |
return `${minutos}:${segundos}`; | |
} | |
function calcularZonas() { | |
const ritmoStr = document.getElementById('ritmo').value; | |
const ritmoDecimal = convertirRitmoADecimal(ritmoStr); | |
if (isNaN(ritmoDecimal) || ritmoDecimal <= 0) { | |
alert("Por favor, introduce un ritmo válido en formato MM:SS."); | |
return; | |
} | |
// Convertir el ritmo a velocidad en km/h | |
const vam = 60 / ritmoDecimal; | |
// Definir los porcentajes de las zonas | |
const zonas = [ | |
{ zona: 'Z1', min: 0.65, max: 0.75, intensidad: '< 75%' }, | |
{ zona: 'Z2', min: 0.75, max: 0.80, intensidad: '75-80%' }, | |
{ zona: 'Z3', min: 0.80, max: 0.90, intensidad: '80-90%' }, | |
{ zona: 'Z4', min: 0.90, max: 1.00, intensidad: '90-100%' }, | |
{ zona: 'Z5', min: 1.00, max: 1.15, intensidad: '100-115%' } | |
]; | |
const resultados = document.getElementById('resultados'); | |
resultados.innerHTML = ''; // Limpiar resultados previos | |
zonas.forEach(zona => { | |
const velocidadMin = vam * zona.min; | |
const velocidadMax = vam * zona.max; | |
// Convertir velocidad a ritmo (min/km) | |
const ritmoMin = 60 / velocidadMin; | |
const ritmoMax = 60 / velocidadMax; | |
// Formatear en MM:SS | |
const ritmoMinFormatted = formatoTiempo(ritmoMin); | |
const ritmoMaxFormatted = formatoTiempo(ritmoMax); | |
// Mostrar resultado | |
const li = document.createElement('li'); | |
if (zona.zona === 'Z1') { | |
li.textContent = `${zona.zona} (${zona.intensidad}): Ritmo < ${ritmoMaxFormatted} min/km`; | |
} else { | |
li.textContent = `${zona.zona} (${zona.intensidad}): Ritmo ${ritmoMinFormatted} - ${ritmoMaxFormatted} min/km`; | |
} | |
resultados.appendChild(li); | |
}); | |
} | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment