Skip to content

Instantly share code, notes, and snippets.

@anartzdev
Last active September 16, 2024 10:05
Show Gist options
  • Save anartzdev/2d7971ff3784da399252134f370c7f46 to your computer and use it in GitHub Desktop.
Save anartzdev/2d7971ff3784da399252134f370c7f46 to your computer and use it in GitHub Desktop.
Calculadora VAM
<!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