Calculadora de ritmo ajustado por pendiente
El ritmo ajustado por pendiente, abreviado GAP, estima el ritmo en llano que exigiría aproximadamente la misma energía que correr por una subida o bajada constante.
Ejecutar — gratis
Introduzca el ritmo observado en segundos por kilómetro y un porcentaje de pendiente con signo: positivo al subir y negativo al bajar. La calculadora aplica una curva polinómica publicada del coste de carrera y devuelve el ritmo equivalente en llano, el factor de corrección y el coste energético modelizado. Es determinista y permite comparar esfuerzos, pero no sustituye los datos de frecuencia cardíaca, potencia, terreno, clima ni rendimiento individual.
Introduzca el ritmo y la pendiente de forma coherente
Indique el ritmo observado como segundos totales por kilómetro. Por ejemplo, un kilómetro en cinco minutos equivale a 300 segundos. La pendiente es el cambio vertical con signo dividido entre la distancia horizontal y multiplicado por 100; ganar cinco metros en 100 metros horizontales representa cerca de +5%. Use un valor negativo para bajar. Ambos campos son obligatorios porque un ritmo sin terreno no puede ajustarse. Emplee la pendiente media únicamente en un tramo bastante uniforme. Si la ruta alterna subidas y bajadas pronunciadas, divídala en segmentos, calcule cada uno y combínelos por tiempo o distancia. Reducir una ruta ondulada a 0% puede ocultar un coste considerable. La altitud GPS suele contener ruido en tramos cortos; cuando sea posible, use una pendiente cartografiada o suavizada. Se aceptan pendientes de −45% a +45% y ritmos de uno a sesenta minutos por kilómetro.
Comprenda la corrección polinómica
El cálculo usa la curva polinómica de coste energético de Minetti: el coste es 155.4g⁵ − 30.4g⁴ − 43.3g³ + 46.3g² + 19.5g + 3.6, donde g es la pendiente expresada como decimal. Con pendiente cero, el coste modelizado es 3.6 julios por kilogramo y metro. El factor de corrección divide ese coste llano entre el coste de la pendiente indicada y multiplica por él los segundos observados por kilómetro. Una subida genera así un ritmo equivalente en llano más rápido. Una bajada moderada también puede hacerlo, pero la relación no es simétrica por el frenado, los impactos y el daño muscular. El coste devuelto es el valor del polinomio, no una medición directa de calorías. El redondeo se aplica al final para que solicitudes repetidas sean estables. Se estima equivalencia energética; no se garantiza que cualquier corredor reproduzca ese ritmo en pista.
Interprete el GAP como herramienta comparativa
Utilice el ritmo ajustado para comparar tramos o entrenamientos que resultarían engañosos en una tabla de ritmos. Un parcial lento cuesta arriba puede reflejar un esfuerzo intenso, mientras que una bajada rápida puede exigir menos de lo que su ritmo bruto sugiere. El GAP resulta más útil cuando superficie, altitud, viento, fatiga y longitud son comparables. El firme técnico, los giros, las escaleras, el barro, el calor o una bajada difícil pueden dominar el resultado, pues la fórmula solo conoce ritmo y pendiente media. También varía la economía individual, sobre todo al descender. Considere las diferencias pequeñas como ruido. Conserve ritmo y pendiente originales junto al resultado para poder auditarlo. El navegador y la API comparten el mismo solucionador JavaScript puro; una solicitud API cuesta $0.002. Interprete siempre la cifra junto con el esfuerzo percibido, la frecuencia cardíaca y el objetivo del entrenamiento.
Qué puede hacer con ella
Comparar intervalos con desnivel
Convierta cada repetición en una cuesta uniforme a un ritmo equivalente en llano antes de comparar esfuerzos.
Revisar parciales de carrera
Explique los kilómetros lentos al subir y rápidos al bajar sin eliminar los parciales originales.
Normalizar un diario de entrenamiento
Añada valores GAP deterministas a sus registros para revisar sesiones similares con una escala común.
Preguntas frecuentes
¿Cuánto cuesta la calculadora?
Cada solicitud API cuesta $0.002; el cálculo del navegador usa el mismo solucionador.
¿La pendiente de bajada debe ser negativa?
Sí. Introduzca un porcentaje negativo al bajar y positivo al subir.
¿Por qué se introduce el ritmo en segundos por kilómetro?
Una sola unidad numérica evita ambigüedades en la API. Multiplique los minutos por 60 y sume los segundos restantes.
¿Predice el GAP mi ritmo real de carrera en llano?
No. Solo estima equivalencia energética; la forma física, el terreno, el viento, la altitud y la fatiga siguen influyendo.
¿Puedo usar una pendiente media en una ruta ondulada?
Solo con cautela. Conviene calcular por separado subidas y bajadas porque sus costes son asimétricos.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/health/grade-adjusted-pace \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pace_seconds_per_km":300,"grade_percent":5}'const res = await fetch("https://api.kit.forhosting.com/health/grade-adjusted-pace", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pace_seconds_per_km": 300,
"grade_percent": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/grade-adjusted-pace",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pace_seconds_per_km": 300,
"grade_percent": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/grade-adjusted-pace", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pace_seconds_per_km":300,"grade_percent":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pace_seconds_per_km":300,"grade_percent":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/grade-adjusted-pace", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"pace_seconds_per_km": 300,
"grade_percent": 5
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.grade_adjusted_pace",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
min_pace_seconds_per_km | 60 |
max_pace_seconds_per_km | 3600 |
min_grade_percent | -45 |
max_grade_percent | 45 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |