حاسبة وتيرة الجري المصححة حسب الانحدار
تقدّر الوتيرة المصححة حسب الانحدار، أو GAP، الوتيرة على سطح مستوٍ التي تتطلب طاقة تقارب الجري على صعود أو هبوط ثابت.
شغّل الأداة مجانًا
أدخلوا الوتيرة المرصودة بالثواني لكل كيلومتر ونسبة انحدار موقعة: موجبة للصعود وسالبة للهبوط. تطبق الحاسبة منحنى كثير حدود منشوراً وتعيد الوتيرة المكافئة ومعامل التصحيح وكلفة الطاقة النموذجية. النتيجة حتمية ومفيدة للمقارنة، لكنها لا تستبدل بيانات النبض أو القدرة أو التضاريس أو الطقس أو الأداء الفردي.
أدخلوا الوتيرة والانحدار بصورة متسقة
أدخلوا مجموع الثواني لكل كيلومتر؛ فخمس دقائق تساوي 300 ثانية. الانحدار هو التغير الرأسي الموقع مقسوماً على المسافة الأفقية ومضروباً في 100، ولذلك يعادل ارتفاع خمسة أمتار خلال 100 متر نحو +5%. استخدموا رقماً سالباً للهبوط. لا تستخدموا المتوسط إلا لمقطع منتظم نسبياً. قسّموا الطريق المتناوب بين الصعود والهبوط إلى مقاطع، ثم اجمعوا النتائج حسب الزمن أو المسافة. قد يخفي متوسط 0% كلفة كبيرة. تكون قراءات ارتفاع GPS مشوشة في المقاطع القصيرة، لذا يفضّل الانحدار المرسوم أو المنعّم. النطاق المقبول من −45% إلى +45%، والوتيرة من دقيقة إلى ستين دقيقة لكل كيلومتر.
افهموا التصحيح بكثير الحدود
يستخدم الحساب منحنى Minetti: الكلفة = 155.4g⁵ − 30.4g⁴ − 43.3g³ + 46.3g² + 19.5g + 3.6، حيث g هو الانحدار عشرياً. عند 0% تبلغ الكلفة 3.6 جول لكل كيلوغرام لكل متر. يقسم المعامل كلفة السطح المستوي على كلفة الانحدار، ثم يضرب الثواني المرصودة. لا يتناظر الهبوط مع الصعود بسبب الكبح والصدمات وإجهاد العضلات. القيمة المعادة ناتج النموذج وليست قياساً مباشراً للسعرات. يجري التقريب في النهاية لضمان الثبات. يصف الأسلوب تكافؤ الطاقة وفق النموذج ولا يضمن أن كل عدّاء يستطيع تحقيق الوتيرة نفسها على المضمار.
فسّروا GAP كأداة للمقارنة
استخدموا GAP لمقارنة المقاطع التي قد تجعلها الوتيرة الخام مضللة. قد يدل كيلومتر بطيء صعوداً على جهد قوي، بينما قد يكون الهبوط السريع أسهل مما توحي به سرعته. تكون النتيجة أفضل عند تقارب السطح والارتفاع والرياح والتعب وطول المقطع. لا ترى الصيغة المسارات التقنية والمنعطفات والسلالم والطين والحر والهبوط الصعب، كما تختلف كفاءة الجري فردياً. اعتبروا الفروق الصغيرة ضوضاء واحتفظوا بالبيانات الأصلية. يستخدم المتصفح وAPI محلل JavaScript النقي نفسه، وتكلف كل مطالبة API مبلغ $0.002. فسّروا النتيجة مع الجهد المحسوس والنبض وهدف التدريب.
حالات الاستخدام
مقارنة تكرارات المرتفعات
حوّلوا كل تكرار على منحدر ثابت إلى وتيرة مكافئة على سطح مستوٍ قبل مقارنة الجهود.
مراجعة أجزاء السباق
فسّروا بطء كيلومترات الصعود وسرعة كيلومترات الهبوط مع الاحتفاظ بالبيانات الأصلية.
توحيد سجل التدريب
أضيفوا قيماً حتمية لـGAP لمراجعة الحصص المتشابهة على مقياس مشترك.
الأسئلة الشائعة
ما تكلفة الحاسبة؟
تكلف كل مطالبة API مبلغ $0.002؛ ويستخدم حساب المتصفح المحلل نفسه.
هل يجب أن يكون انحدار الهبوط سالباً؟
نعم. أدخلوا نسبة سالبة للهبوط ونسبة موجبة للصعود.
لماذا تُدخل الوتيرة بالثواني لكل كيلومتر؟
تمنع الوحدة الرقمية الواحدة التباس API. اضربوا الدقائق في 60 ثم أضيفوا الثواني.
هل تتنبأ GAP بوتيرتي الفعلية على سطح مستوٍ؟
لا. فهي تقدّر تكافؤ الطاقة فقط، وتظل اللياقة والتضاريس والرياح والارتفاع والتعب مؤثرة.
هل يمكن استخدام متوسط الانحدار لطريق متموج؟
بحذر فقط. احسبوا الصعود والهبوط منفصلين لأن كلفتيهما غير متناظرتين.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
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)مثال على الطلب
{
"pace_seconds_per_km": 300,
"grade_percent": 5
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.grade_adjusted_pace",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
min_pace_seconds_per_km | 60 |
max_pace_seconds_per_km | 3600 |
min_grade_percent | -45 |
max_grade_percent | 45 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |