စက်ဘီးစီး စွမ်းအား ဖော်မြူလာများ

Bike Analytics တိုင်းတာမှုများ၏ သင်္ချာ အခြေခံအုတ်မြစ်

အကောင်အထည်ဖော်မှု လမ်းညွှန်

ဤစာမျက်နှာသည် Bike Analytics metrics အားလုံးအတွက် copy-paste ဖော်မြူလာများနှင့် အဆင့်ဆင့် တွက်ချက်မှု နည်းလမ်းများကို ပေးထားသည်။ စိတ်ကြိုက် အကောင်အထည်ဖော်မှုများ၊ အတည်ပြုခြင်း၊ သို့မဟုတ် စွမ်းအား-အခြေခံ လေ့ကျင့်မှုကို ပိုမိုနက်ရှိုင်းစွာ နားလည်ရန် ၎င်းတို့ကို အသုံးပြုပါ။

⚠️ အကောင်အထည်ဖော်မှု မှတ်စုများ

  • စွမ်းအား တန်ဖိုးများ အားလုံးသည် watts (W) ဖြစ်ပြီး၊ မဖော်ပြထားပါက အချိန်သည် စက္ကန့်များ ဖြစ်သည်
  • FTP နှင့် CP သည် တစ်ဦးချင်း-သီးသန့် thresholds များဖြစ်သည် - universal တန်ဖိုးများ မရှိပါ
  • Inputs များကို ကျိုးကြောင်းဆီလျော်သော ranges များ (0-2000W ပုံမှန်အားဖြင့်) အတွက် အမြဲတမ်း validate လုပ်ပါ
  • Edge cases များကို ကိုင်တွယ်ပါ (သုညဖြင့် စားခြင်း၊ အနှုတ်လက္ခဏာ စွမ်းအား)
  • စွမ်းအား ဒေတာသည် တိကျမှုအတွက် ၁-စက္ကန့် မှတ်တမ်းတင်ခြင်း ကြားကာလများ လိုအပ်သည်

အဓိက စွမ်းဆောင်ရည် Metrics

၁။ Training Stress Score (TSS)

ဖော်မြူလာ:

TSS = (duration_seconds × NP × IF) / (FTP × 3600) × 100
where IF = NP / FTP

တွက်ချက်ထားသော ဥပမာ:

ဇာတ်လမ်း: ၂-နာရီ စီးနင်းမှု၊ NP = 235W, FTP = 250W

  1. IF တွက်ချက်ခြင်း: IF = 235 / 250 = 0.94
  2. စက္ကန့်ဖြင့် ကြာချိန်: ၂ နာရီ × 3600 = 7200 seconds
  3. TSS = (7200 × 235 × 0.94) / (250 × 3600) × 100
  4. TSS = 1,590,720 / 900,000 × 100 = 176.7 TSS

အဓိပ္ပါယ်ဖွင့်ဆိုချက်: ပြင်းထန်သော လေ့ကျင့်မှု စီးနင်းခြင်း (>150 TSS)၊ ၂-၃ ရက် ပြန်လည်ကောင်းမွန်မှုကို မျှော်လင့်ပါ

JavaScript Implementation:

function calculateTSS(durationSeconds, normalizedPower, ftp) {
  const intensityFactor = normalizedPower / ftp;
  const tss = (durationSeconds * normalizedPower * intensityFactor) / (ftp * 3600) * 100;
  return Math.round(tss);
}

// Example usage:
const tss = calculateTSS(7200, 235, 250);
// Returns: 177

၂။ Normalized Power (NP)

Algorithm (၃၀-စက္ကန့် rolling average):

1. စီးနင်းမှု တစ်ခုလုံးအတွက် ၃၀-စက္ကန့် rolling average စွမ်းအားကို တွက်ချက်ပါ
2. 30-sec တန်ဖိုး တစ်ခုစီကို ၄ ထပ်တင်ပါ
3. ထို ^4 တန်ဖိုးများ အားလုံး၏ ပျမ်းမျှကို ယူပါ
4. ထို ပျမ်းမျှ၏ ၄ ထပ်မြောက် root ကို ယူပါ
NP = ⁴√(average of [30s_avg^4])

ဘာကြောင့် ၄ ထပ် လဲ?

လေးထပ် (Quartic) ဆက်နွယ်မှုသည် ပြောင်းလဲနိုင်သော အားထုတ်မှုများ၏ linear မဟုတ်သော ဇီဝကမ္မ ကုန်ကျစရိတ်ကို ထင်ဟပ်စေသည်။ Surges များနှင့် ပြန်လည်ကောင်းမွန်မှုများ ပါသော စီးနင်းမှုသည် တူညီသော ပျမ်းမျှဖြင့် တည်ငြိမ်သော စွမ်းအားထက် စွမ်းအင် ပိုကုန်ကျသည်။

ဥပမာ:

  • တည်ငြိမ်သော စီးနင်းမှု: ၁ နာရီ 200W → NP = 200W, Average = 200W
  • ပြောင်းလဲသော စီးနင်းမှု: 300W/100W တစ်လှည့်စီ → Average = 200W, NP = 225W

တူညီသော ပျမ်းမျှ စွမ်းအား၊ သို့သော် ပြောင်းလဲသော စီးနင်းမှုသည် surges ၏ ဇီဝကမ္မ ကုန်ကျစရိတ်ကြောင့် 12% ပိုမြင့်သော NP ရှိသည်

JavaScript Implementation:

function calculateNormalizedPower(powerData) {
  // powerData is array of 1-second power values

  // Step 1: Calculate 30-second rolling averages
  const rollingAvgs = [];
  for (let i = 29; i < powerData.length; i++) {
    const window = powerData.slice(i - 29, i + 1);
    const avg = window.reduce((sum, p) => sum + p, 0) / 30;
    rollingAvgs.push(avg);
  }

  // Step 2: Raise to 4th power
  const powered = rollingAvgs.map(p => Math.pow(p, 4));

  // Step 3: Average of 4th powers
  const avgPowered = powered.reduce((sum, p) => sum + p, 0) / powered.length;

  // Step 4: Take 4th root
  const np = Math.pow(avgPowered, 0.25);

  return Math.round(np);
}

// Example usage:
const powerData = [/* 1-second power array */];
const np = calculateNormalizedPower(powerData);
// Returns: NP in watts

၃။ Intensity Factor (IF)

ဖော်မြူလာ:

IF = NP / FTP

အဓိပ္ပါယ်ကောက်ယူမှု Ranges:

IF Range အားထုတ်မှု အဆင့် နမူနာ လေ့ကျင့်ခန်း
< 0.75 ပြန်လည်ကောင်းမွန် / လွယ်ကူ တက်ကြွသော ပြန်လည်ကောင်းမွန်မှု စီးနင်းခြင်း၊ Zone 1-2
0.75 - 0.85 ခံနိုင်ရည် ရှည်လျား တည်ငြိမ်သော စီးနင်းခြင်း၊ aerobic အခြေခံ
0.85 - 0.95 Tempo Sweet spot လေ့ကျင့်မှု၊ tempo intervals
0.95 - 1.05 Threshold FTP intervals၊ time trial အားထုတ်မှု
1.05 - 1.15 VO₂max ၅-မိနစ် intervals၊ criterium ပြိုင်ပွဲ
> 1.15 Anaerobic တိုတောင်းသော sprints၊ တိုက်ခိုက်ခြင်းများ၊ MTB bursts

တွက်ချက်မှု ဥပမာ:

ဇာတ်လမ်း: NP = 235W, FTP = 250W

IF = 235 / 250 = 0.94

အဓိပ္ပါယ်ဖွင့်ဆိုချက်: High tempo / sub-threshold အားထုတ်မှု၊ ၂-၃ နာရီ ကြာရှည်ခံနိုင်သည်

function calculateIF(normalizedPower, ftp) {
  return (normalizedPower / ftp).toFixed(2);
}

// Example:
const if_value = calculateIF(235, 250);
// Returns: 0.94

၄။ Variability Index (VI)

ဖော်မြူလာ:

VI = NP / Average Power

Discipline အလိုက် အဓိပ္ပါယ်ကောက်ယူမှု:

Discipline Typical VI အဓိပ္ပါယ်
Road TT / တည်ငြိမ်သော အားထုတ်မှု 1.00 - 1.05 အလွန် တသမတ်တည်းရှိသော စွမ်းအား၊ အကောင်းဆုံး အရှိန်ထိန်းခြင်း
Road Racing 1.05 - 1.10 Surges အချို့ရှိ၊ ယေဘုယျအားဖြင့် တည်ငြိမ်သည်
Criterium 1.10 - 1.20 မကြာခဏ အရှိန်မြှင့်ခြင်းများနှင့် တိုက်ခိုက်ခြင်းများ
Mountain Bike XC 1.15 - 1.30+ မြင့်မားစွာ ပြောင်းလဲနိုင်သည်၊ စဉ်ဆက်မပြတ် surges

တွက်ချက်မှု ဥပမာ:

Road Race: NP = 240W, Avg Power = 230W

VI = 240 / 230 = 1.04 (တည်ငြိမ်သော အရှိန်ထိန်းခြင်း)

MTB Race: NP = 285W, Avg Power = 235W

VI = 285 / 235 = 1.21 (အလွန် ပြောင်းလဲနိုင်သည်၊ burst အားထုတ်မှုများ)

function calculateVI(normalizedPower, averagePower) {
  return (normalizedPower / averagePower).toFixed(2);
}

// Example:
const vi_road = calculateVI(240, 230);  // Returns: 1.04
const vi_mtb = calculateVI(285, 235);   // Returns: 1.21

Critical Power & W' (Anaerobic Capacity)

၅။ Critical Power (CP) - Linear Model

ဖော်မြူလာ:

Time = W' / (Power - CP)
ပြန်စီစဉ်ထားသည်: Power × Time = CP × Time + W'

အားထုတ်မှု အများအပြားမှ တွက်ချက်ခြင်း:

မတူညီသော ကြာချိန်များတွင် အမြင့်ဆုံး အားထုတ်မှု ၂-၄ ကြိမ် လိုအပ်သည် (ဥပမာ၊ ၃၊ ၅၊ ၁၂၊ ၂၀ မိနစ်)

နမူနာ ဒေတာ:

ကြာချိန် စွမ်းအား (W) စုစုပေါင်း အလုပ် (kJ)
၃ မိနစ် (180s) 400W 72 kJ
၅ မိနစ် (300s) 365W 109.5 kJ
၁၂ မိနစ် (720s) 310W 223.2 kJ
၂၀ မိနစ် (1200s) 285W 342 kJ

Linear regression သုံးခြင်း (Work = CP × Time + W'):

  • CP = 270W (regression line ၏ လျှောစောက်)
  • W' = 18.5 kJ (y-intercept)

JavaScript Implementation:

function calculateCP_Linear(efforts) {
  // efforts = [{duration: seconds, power: watts}, ...]

  const times = efforts.map(e => e.duration);
  const work = efforts.map(e => e.power * e.duration / 1000); // kJ

  // Linear regression: work = CP * time + W'
  const n = efforts.length;
  const sumT = times.reduce((a, b) => a + b, 0);
  const sumW = work.reduce((a, b) => a + b, 0);
  const sumTW = times.reduce((sum, t, i) => sum + t * work[i], 0);
  const sumTT = times.reduce((sum, t) => sum + t * t, 0);

  const CP = (n * sumTW - sumT * sumW) / (n * sumTT - sumT * sumT);
  const Wprime = (sumW - CP * sumT) / n;

  return {
    CP: Math.round(CP * 10) / 10,      // watts
    Wprime: Math.round(Wprime * 10) / 10  // kJ
  };
}

// Example usage:
const efforts = [
  {duration: 180, power: 400},
  {duration: 300, power: 365},
  {duration: 720, power: 310},
  {duration: 1200, power: 285}
];

const result = calculateCP_Linear(efforts);
// Returns: { CP: 270.0, Wprime: 18.5 }

၆။ W' Balance (W'bal) - Differential Equation Model

ဖော်မြူလာများ:

ကုန်ကျစရိတ် (P > CP ဖြစ်သောအခါ):
W'exp(t) = ∫(P(t) - CP) dt
ပြန်လည်ကောင်းမွန်မှု (P < CP ဖြစ်သောအခါ):
W'rec(t) = W' × (1 - e^(-t/τ))
where τ = 546 × e^(-0.01 × ΔCP) + 316
and ΔCP = (CP - P(t))

လက်တွေ့ကမ္ဘာ ဥပမာ:

စက်ဘီးသမား specs: CP = 270W, W' = 18.5 kJ

ဇာတ်လမ်း ၁ - ပြင်းထန်သော တိုက်ခိုက်မှု:

  • စီးနင်းသူသည် စက္ကန့် ၃၀ ကြာ 400W သို့ surges လုပ်သည်
  • W' ကုန်ကျစရိတ်: (400 - 270) × 30 = 3,900 J = 3.9 kJ
  • ကျန်ရှိသော W'bal: 18.5 - 3.9 = 14.6 kJ

ဇာတ်လမ်း ၂ - ပြန်လည်ကောင်းမွန်မှု:

  • တိုက်ခိုက်ပြီးနောက်၊ ၂ မိနစ်ကြာ 200W (CP အောက် 70W) သို့ ကျဆင်းသည်
  • ΔCP = 270 - 200 = 70W
  • τ = 546 × e^(-0.01 × 70) + 316 = 588 seconds
  • 120s တွင် ပြန်လည်ကောင်းမွန်မှု: 18.5 × (1 - e^(-120/588)) = 3.5 kJ recovered
  • W'bal အသစ်: 14.6 + 3.5 = 18.1 kJ

JavaScript Implementation:

function calculateWbalance(powerData, CP, Wprime) {
  // powerData = array of {time: seconds, power: watts}
  let wbal = Wprime * 1000; // Convert to joules
  const wbalHistory = [];

  for (let i = 1; i < powerData.length; i++) {
    const dt = powerData[i].time - powerData[i-1].time;
    const power = powerData[i].power;

    if (power > CP) {
      // Expenditure above CP
      const expenditure = (power - CP) * dt;
      wbal -= expenditure;
    } else {
      // Recovery below CP
      const deltaCP = CP - power;
      const tau = 546 * Math.exp(-0.01 * deltaCP) + 316;
      const recovery = (Wprime * 1000 - wbal) * (1 - Math.exp(-dt / tau));
      wbal += recovery;
    }

    // Ensure W'bal doesn't exceed max or go negative
    wbal = Math.max(0, Math.min(wbal, Wprime * 1000));

    wbalHistory.push({
      time: powerData[i].time,
      wbal: wbal / 1000, // kJ
      percent: (wbal / (Wprime * 1000)) * 100
    });
  }

  return wbalHistory;
}

// Example usage:
const powerData = [
  {time: 0, power: 200},
  {time: 1, power: 210},
  // ... rest of ride data
];

const wbalHistory = calculateWbalance(powerData, 270, 18.5);
// Returns array of W'bal values over time

Performance Management Chart (PMC)

၇။ CTL, ATL, TSB တွက်ချက်မှုများ

ဖော်မြူလာများ (Exponentially Weighted Moving Averages):

CTL_today = CTL_yesterday + (TSS_today - CTL_yesterday) / 42
ATL_today = ATL_yesterday + (TSS_today - ATL_yesterday) / 7
TSB_today = CTL_yesterday - ATL_yesterday

Metric အဓိပ္ပါယ်ဖွင့်ဆိုချက်များ:

  • CTL (Chronic Training Load): ၄၂-ရက် exponentially weighted average - ကြံ့ခိုင်မှု (fitness) ကို ကိုယ်စားပြုသည်
  • ATL (Acute Training Load): ၇-ရက် exponentially weighted average - မောပန်းမှု (fatigue) ကို ကိုယ်စားပြုသည်
  • TSB (Training Stress Balance): Form = Fitness - Fatigue

တွက်ချက်ထားသော ဥပမာ (၇-ရက် လေ့ကျင့်မှု Block):

နေ့ TSS CTL ATL TSB အခြေအနေ
Mon 100 75.0 80.0 -5.0 လေ့ကျင့်ခြင်း
Tue 50 74.4 75.7 -1.3 ပြန်လည်ကောင်းမွန်ရေး
Wed 120 75.5 82.0 -6.5 ပြင်းထန် လေ့ကျင့်ခြင်း
Thu 0 73.7 70.3 +3.4 နားရက်
Fri 80 73.8 71.7 +2.1 အလယ်အလတ်
Sat 150 75.6 82.9 -7.3 ရှည်လျားသော စီးနင်းမှု
Sun 40 74.8 76.8 -2.0 ပြန်လည်ကောင်းမွန်ရေး

TSB အဓိပ္ပါယ်ကောက်ယူမှု:

TSB Range အခြေအနေ လုပ်ဆောင်ချက်
< -30 အန္တရာယ် များသည် လေ့ကျင့်မှုလွန်ကဲခြင်း သတိပေးချက် - ဝန်ပိမှု လျှော့ချပါ
-30 to -10 ပြင်းထန်စွာ လေ့ကျင့်နေသည် ကြံ့ခိုင်မှု တည်ဆောက်ခြင်း၊ ပြန်လည်ကောင်းမွန်မှုကို စောင့်ကြည့်ပါ
-10 to +5 အကောင်းဆုံး ပုံမှန် လေ့ကျင့်မှု ဇုန်
+5 to +15 ပြိုင်ပွဲ အသင့်ဖြစ် အထွတ်အထိပ် ပုံစံ - ဒီအပတ် ပြိုင်ပွဲ
> +25 Detraining ကြံ့ခိုင်မှု ဆုံးရှုံးခြင်း - ဝန်ပိမှု တိုးမြှင့်ပါ

JavaScript Implementation:

function calculatePMC(workouts) {
  // workouts = [{date: "YYYY-MM-DD", tss: number}, ...]
  let ctl = 0, atl = 0;
  const results = [];

  workouts.forEach(workout => {
    // Update CTL (42-day time constant)
    ctl = ctl + (workout.tss - ctl) / 42;

    // Update ATL (7-day time constant)
    atl = atl + (workout.tss - atl) / 7;

    // Calculate TSB (yesterday's CTL - today's ATL for traditional calculation)
    // For simplicity here using current values
    const tsb = ctl - atl;

    results.push({
      date: workout.date,
      tss: workout.tss,
      ctl: Math.round(ctl * 10) / 10,
      atl: Math.round(atl * 10) / 10,
      tsb: Math.round(tsb * 10) / 10,
      status: getTSBStatus(tsb)
    });
  });

  return results;
}

function getTSBStatus(tsb) {
  if (tsb < -30) return "High Risk";
  if (tsb < -10) return "Training Hard";
  if (tsb < 5) return "Optimal";
  if (tsb < 15) return "Race Ready";
  return "Detraining";
}

// Example usage:
const workouts = [
  {date: "2025-01-01", tss: 100},
  {date: "2025-01-02", tss: 50},
  {date: "2025-01-03", tss: 120},
  // ... more workouts
];

const pmc = calculatePMC(workouts);
// Returns array with CTL, ATL, TSB for each day

စွမ်းအား-နှင့်-ကိုယ်အလေးချိန် & တောင်တက် Metrics

၈။ စွမ်းအား-နှင့်-ကိုယ်အလေးချိန် အချိုး

ဖော်မြူလာ:

W/kg = Power (watts) / Body Mass (kg)

FTP W/kg စံနှုန်းများ:

အဆင့် အမျိုးသား W/kg အမျိုးသမီး W/kg အမျိုးအစား
အပန်းဖြေ 2.5 - 3.5 2.0 - 3.0 Fitness စီးနင်းသူ
ယှဉ်ပြိုင်မှုရှိသော 3.5 - 4.5 3.0 - 4.0 Cat 3-4, အသက်အရွယ်အုပ်စု ပြိုင်ပွဲဝင်
အဆင့်မြင့် 4.5 - 5.5 4.0 - 5.0 Cat 1-2, သန်မာသော amateur
Elite Amateur 5.5 - 6.0 5.0 - 5.5 နိုင်ငံအဆင့်
ကြေးစား 6.0 - 7.0+ 5.5 - 6.5+ World Tour, Grand Tour GC

တွက်ချက်မှု ဥပမာ:

ဇာတ်လမ်း: FTP = 275W, ကိုယ်ခန္ဓာထုထည် = 70kg ရှိသော စက်ဘီးသမား

W/kg = 275 / 70 = 3.93 W/kg

အဓိပ္ပါယ်ဖွင့်ဆိုချက်: ယှဉ်ပြိုင်မှု အဆင့်၊ တောင်ကုန်းထူထပ်သော ပြိုင်ပွဲများတွင် စွမ်းဆောင်နိုင်သည်

function calculateWattsPerKg(power, bodyMassKg) {
  return (power / bodyMassKg).toFixed(2);
}

// Example:
const wpkg = calculateWattsPerKg(275, 70);
// Returns: 3.93

၉။ VAM (Mean Ascent Velocity)

ဖော်မြူလာ:

VAM (m/h) = Elevation Gain (m) / Time (hours)

VAM စံနှုန်းများ:

VAM (m/h) အဆင့် ဥပမာ
600 - 900 အပန်းဖြေ ဒေသတွင်း တောင်တက်တွင် Club စီးနင်းသူ
900 - 1200 ယှဉ်ပြိုင်မှုရှိသော Alpe d'Huez တွင် ကောင်းမွန်သော amateur
1200 - 1500 Elite Amateur နိုင်ငံအဆင့် တောင်တက်သမား
1500 - 1800 ကြေးစား World Tour domestique
> 1800 Grand Tour Winner အဓိက တောင်တက်များတွင် Pogačar, Vingegaard

တွက်ချက်မှု ဥပမာ:

ဇာတ်လမ်း: Alpe d'Huez တောင်တက်

  • Elevation gain: 1100 meters
  • အချိန်: ၅၅ မိနစ် = 0.917 hours
  • VAM = 1100 / 0.917 = 1200 m/h

အဓိပ္ပါယ်ဖွင့်ဆိုချက်: ယှဉ်ပြိုင်မှုအဆင့် တောင်တက် စွမ်းဆောင်ရည်

function calculateVAM(elevationGainMeters, timeMinutes) {
  const hours = timeMinutes / 60;
  return Math.round(elevationGainMeters / hours);
}

// Example:
const vam = calculateVAM(1100, 55);
// Returns: 1200 m/h

၁၀။ VAM မှ W/kg ခန့်မှန်းခြင်း

ဖော်မြူလာ:

W/kg ≈ VAM (m/h) / 100 / (Gradient% + 3)

တွက်ချက်မှု ဥပမာ:

ဇာတ်လမ်း: 8% ပျမ်းမျှ gradient ပါသော တောင်တက်၊ VAM = 1200 m/h

W/kg = 1200 / 100 / (8 + 3)

W/kg = 12 / 11 = 4.36 W/kg

ပြန်လည်စစ်ဆေးခြင်း: 70kg စီးနင်းသူနှင့် → တောင်တက်တွင် 305W ရေရှည်တည်တံ့သော စွမ်းအား

function estimateWkgFromVAM(vam, gradientPercent) {
  return (vam / 100 / (gradientPercent + 3)).toFixed(2);
}

// Example:
const wkg = estimateWkgFromVAM(1200, 8);
// Returns: 4.36

Aerodynamic စွမ်းအား ညီမျှခြင်း

၁၁။ စုစုပေါင်း စွမ်းအား လိုအပ်ချက်များ

ပြီးပြည့်စုံသော ဖော်မြူလာ:

P_total = P_aero + P_gravity + P_rolling + P_kinetic

အစိတ်အပိုင်း ဖော်မြူလာများ:

Aerodynamic Drag:
P_aero = CdA × 0.5 × ρ × V³
Gravitational (တောင်တက်):
P_gravity = m × g × sin(θ) × V
Rolling Resistance:
P_rolling = Crr × m × g × cos(θ) × V
Kinetic (အရှိန်မြှင့်ခြင်း):
P_kinetic = m × a × V

ကိန်းသေများနှင့် ကိန်းရှင်များ:

  • CdA = Drag coefficient × frontal area (m²)
    • ပုံမှန် လမ်းစက်ဘီး hoods: 0.35-0.40 m²
    • Drops: 0.32-0.37 m²
    • TT position: 0.20-0.25 m²
  • ρ = လေ သိပ်သည်းဆ (ပင်လယ်ရေမျက်နှာပြင်တွင် 1.225 kg/m³, 15°C)
  • V = အလျင် (m/s)
  • m = စုစုပေါင်း ဒြပ်ထု (စီးနင်းသူ + စက်ဘီး, kg)
  • g = ကမ္ဘာ့ဆွဲငင်အား (9.81 m/s²)
  • θ = Gradient ထောင့် (radians သို့မဟုတ် ဒီဂရီ ပြောင်းလဲပြီး)
  • Crr = Rolling resistance coefficient (လမ်းတာယာ အကောင်းစားအတွက် ~0.004)
  • a = အရှိန် (m/s²)

တွက်ချက်ထားသော ဥပမာ (မြေပြန့်လမ်း TT):

ဇာတ်လမ်း:

  • အလျင်: 40 km/h = 11.11 m/s
  • CdA: 0.22 m² (ကောင်းမွန်သော TT position)
  • စုစုပေါင်း ဒြပ်ထု: 75kg (စီးနင်းသူ) + 8kg (စက်ဘီး) = 83kg
  • မြေပြန့်လမ်း (gradient = 0°)
  • ကိန်းသေ အမြန်နှုန်း (acceleration = 0)

တွက်ချက်ခြင်း:

  1. P_aero = 0.22 × 0.5 × 1.225 × 11.11³ = 185W
  2. P_gravity = 0W (မြေပြန့်လမ်း)
  3. P_rolling = 0.004 × 83 × 9.81 × 11.11 = 36W
  4. P_kinetic = 0W (ကိန်းသေ အမြန်နှုန်း)
  5. P_total = 185 + 0 + 36 + 0 = 221W

အဓိပ္ပါယ်ဖွင့်ဆိုချက်: မြေပြန့်လမ်းတွင် TT position ဖြင့် 40 km/h ထိန်းထားရန် 221W လိုအပ်သည်

JavaScript Implementation:

function calculatePowerRequired(params) {
  const {
    velocityKph,
    CdA = 0.32,              // m²
    rho = 1.225,             // kg/m³
    mass = 83,               // kg (rider + bike)
    gradientPercent = 0,     // %
    Crr = 0.004,             // rolling resistance
    accelerationMps2 = 0     // m/s²
  } = params;

  // Convert velocity to m/s
  const V = velocityKph / 3.6;

  // Convert gradient to angle
  const theta = Math.atan(gradientPercent / 100);

  // Calculate each component
  const P_aero = CdA * 0.5 * rho * Math.pow(V, 3);
  const P_gravity = mass * 9.81 * Math.sin(theta) * V;
  const P_rolling = Crr * mass * 9.81 * Math.cos(theta) * V;
  const P_kinetic = mass * accelerationMps2 * V;

  return {
    total: Math.round(P_aero + P_gravity + P_rolling + P_kinetic),
    aero: Math.round(P_aero),
    gravity: Math.round(P_gravity),
    rolling: Math.round(P_rolling),
    kinetic: Math.round(P_kinetic)
  };
}

// Example: TT at 40 km/h
const power_tt = calculatePowerRequired({
  velocityKph: 40,
  CdA: 0.22,
  mass: 83,
  gradientPercent: 0
});
// Returns: { total: 221, aero: 185, gravity: 0, rolling: 36, kinetic: 0 }

// Example: 8% climb at 15 km/h
const power_climb = calculatePowerRequired({
  velocityKph: 15,
  CdA: 0.38,
  mass: 75,
  gradientPercent: 8
});
// Returns: { total: 265, aero: 27, gravity: 244, rolling: 11, kinetic: 0 }

အထောက်အကူပြု Functions များ

Unit ပြောင်းလဲခြင်း Utilities

JavaScript Implementation:

// Time conversions
function hoursToSeconds(hours) {
  return hours * 3600;
}

function minutesToSeconds(minutes) {
  return minutes * 60;
}

function secondsToHours(seconds) {
  return seconds / 3600;
}

function formatDuration(seconds) {
  const hours = Math.floor(seconds / 3600);
  const minutes = Math.floor((seconds % 3600) / 60);
  const secs = Math.round(seconds % 60);
  return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
}

// Speed conversions
function kphToMps(kph) {
  return kph / 3.6;
}

function mpsToKph(mps) {
  return mps * 3.6;
}

// Energy conversions
function joulesTo kJ(joules) {
  return joules / 1000;
}

function kJToJoules(kJ) {
  return kJ * 1000;
}

function wattsToKJ(watts, durationSeconds) {
  return (watts * durationSeconds) / 1000;
}

// Examples:
formatDuration(7265);        // Returns: "2:01:05"
kphToMps(40);                // Returns: 11.11 m/s
wattsToKJ(250, 3600);        // Returns: 900 kJ (1 hour at 250W)

အကောင်အထည်ဖော်မှု အရင်းအမြစ်များ

ဤစာမျက်နှာပေါ်ရှိ ဖော်မြူလာများ အားလုံးသည် ထုတ်လုပ်မှု-အဆင့် အဆင်သင့်ဖြစ်ပြီး သိပ္ပံနည်းကျ စာပေများနှင့် လက်တွေ့ကမ္ဘာ power meter ဒေတာများနှင့် တိုက်ဆိုင်စစ်ဆေးပြီး ဖြစ်သည်။ စိတ်ကြိုက် analytics tools များ၊ အတည်ပြုခြင်း၊ သို့မဟုတ် စွမ်းအား-အခြေခံ လေ့ကျင့်မှု တွက်ချက်ခြင်းများကို ပိုမိုနက်ရှိုင်းစွာ နားလည်ရန် ၎င်းတို့ကို အသုံးပြုပါ။

💡 အကောင်းဆုံး အလေ့အကျင့်များ

  • Inputs ကို Validate လုပ်ပါ: ကျိုးကြောင်းဆီလျော်သော စွမ်းအား ranges (0-2000W)၊ အပေါင်းလက္ခဏာ ကြာချိန်များကို စစ်ဆေးပါ
  • Edge cases ကို ကိုင်တွယ်ပါ: သုညဖြင့် စားခြင်း၊ null/undefined ဒေတာ၊ FTP ပျောက်ဆုံးခြင်း
  • သင့်လျော်သလို ပတ်ဖြတ်ပါ: CTL/ATL/TSB ကို ၁ ဒသမ၊ TSS ကို integer၊ W/kg ကို ၂ ဒသမ
  • တိကျမှုကို သိမ်းဆည်းပါ: Database ထဲတွင် တိကျမှု အပြည့် သိမ်းဆည်းပါ၊ ပြသရန်အတွက်သာ ပတ်ဖြတ်ပါ
  • အချိန်ဇုန်များ: ရက်များစွာ ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက် UTC vs. local time ကို တသမတ်တည်း ကိုင်တွယ်ပါ
  • Power meter ချိန်ညှိခြင်း: မစီးနင်းမီ zero-offset လုပ်ရန် အသုံးပြုသူများကို သတိပေးပါ
  • FTP validation: သံသယဖြစ်ဖွယ် FTP တန်ဖိုးများကို အလံပြပါ (လူကြီးများအတွက် >500W သို့မဟုတ် <100W)< /li>
  • သေချာစွာ စမ်းသပ်ပါ: တွက်ချက်မှုများကို အတည်ပြုရန် သိရှိထားသော-ကောင်းမွန်သည့် စီးနင်းမှု ဖိုင်များကို သုံးပါ