Exercise physiology class predestination i want simple matter PPT

Asking for Preferences
Reading File
Reading File
Running Command

mkdir -p /home/daytona/workspace/exercise-physiology-ppt

Writing File

~/exercise-physiology-ppt/create_ppt.js

const pptxgen = require("pptxgenjs");

const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Exercise Physiology";

// ─── Color Palette ───────────────────────────────────────────────────────────
const DARK_BG   = "0D1B2A";   // deep navy (title / section slides)
const MID_BG    = "1B2E42";   // mid navy (content slides)
const ACCENT    = "00C9A7";   // teal-green
const ACCENT2   = "FFA552";   // warm orange
const WHITE     = "FFFFFF";
const LIGHT_TXT = "D0E8F2";   // pale blue-white for body
const CARD_BG   = "162436";   // card background

// ─── Helper: dark content slide base ─────────────────────────────────────────
function contentSlide(titleText, subtitleText) {
  const slide = pres.addSlide();
  // Full background
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: MID_BG } });
  // Left accent bar
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.07, h: 5.625, fill: { color: ACCENT } });
  // Title
  slide.addText(titleText, {
    x: 0.3, y: 0.2, w: 9.4, h: 0.6,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri", align: "left", margin: 0
  });
  // Divider
  slide.addShape(pres.ShapeType.rect, { x: 0.3, y: 0.88, w: 9.2, h: 0.03, fill: { color: ACCENT } });
  if (subtitleText) {
    slide.addText(subtitleText, {
      x: 0.3, y: 0.92, w: 9.2, h: 0.35,
      fontSize: 12, color: ACCENT2, fontFace: "Calibri", italic: true, align: "left", margin: 0
    });
  }
  return slide;
}

// ─── Helper: info card ────────────────────────────────────────────────────────
function addCard(slide, x, y, w, h, title, bullets) {
  slide.addShape(pres.ShapeType.roundRect, {
    x, y, w, h,
    fill: { color: CARD_BG },
    line: { color: ACCENT, width: 1.5 },
    rectRadius: 0.1
  });
  slide.addText(title, {
    x: x + 0.12, y: y + 0.08, w: w - 0.24, h: 0.32,
    fontSize: 11, bold: true, color: ACCENT, fontFace: "Calibri", align: "left", margin: 0
  });
  const items = bullets.map((b, i) => ({
    text: b,
    options: { bullet: true, breakLine: i < bullets.length - 1, fontSize: 10, color: LIGHT_TXT, fontFace: "Calibri" }
  }));
  slide.addText(items, {
    x: x + 0.12, y: y + 0.42, w: w - 0.24, h: h - 0.52,
    valign: "top", margin: 0
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 1 – Title Slide
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG } });
  // Accent strip top
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.12, fill: { color: ACCENT } });
  // Accent strip bottom
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.505, w: 10, h: 0.12, fill: { color: ACCENT2 } });
  // Big decorative circle (background, subtle)
  slide.addShape(pres.ShapeType.ellipse, {
    x: 6.5, y: 0.5, w: 4.5, h: 4.5,
    fill: { type: "solid", color: "142233" },
    line: { color: "1E3A55", width: 1 }
  });
  // Icon-style letters
  slide.addText("EP", {
    x: 7.1, y: 1.2, w: 3, h: 2.5,
    fontSize: 96, bold: true, color: "1E3A55", fontFace: "Calibri", align: "center"
  });

  slide.addText("Exercise Physiology", {
    x: 0.5, y: 1.4, w: 6.8, h: 1,
    fontSize: 34, bold: true, color: WHITE, fontFace: "Calibri", align: "left", margin: 0
  });
  slide.addShape(pres.ShapeType.rect, { x: 0.5, y: 2.5, w: 3, h: 0.05, fill: { color: ACCENT } });
  slide.addText("Fundamentals for Class", {
    x: 0.5, y: 2.65, w: 6.5, h: 0.45,
    fontSize: 16, color: LIGHT_TXT, fontFace: "Calibri", italic: true, align: "left", margin: 0
  });
  slide.addText("Key Concepts • Energy Systems • Cardiovascular & Respiratory Responses • Muscle Physiology", {
    x: 0.5, y: 3.2, w: 6.5, h: 0.5,
    fontSize: 11, color: ACCENT2, fontFace: "Calibri", align: "left", margin: 0
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 2 – What is Exercise Physiology?
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("What is Exercise Physiology?", "The science of how the body responds and adapts to physical activity");
  // Two columns
  addCard(slide, 0.3, 1.35, 4.5, 2.0, "Definition", [
    "Study of acute & chronic physiological responses to exercise",
    "Bridges anatomy, biochemistry, and clinical practice",
    "Foundation for training, rehab, and sports medicine"
  ]);
  addCard(slide, 5.0, 1.35, 4.6, 2.0, "Why It Matters", [
    "Optimises athletic performance",
    "Guides clinical exercise prescription",
    "Prevents and treats chronic disease",
    "Informs occupational & military fitness"
  ]);
  slide.addText("Core areas: Metabolism • Cardiorespiratory • Neuromuscular • Endocrine", {
    x: 0.3, y: 3.5, w: 9.4, h: 0.4,
    fontSize: 11, color: ACCENT, fontFace: "Calibri", align: "center",
    fill: { color: CARD_BG }, margin: 6
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 3 – Energy Systems Overview
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("Energy Systems", "How muscles produce ATP during exercise");
  // Three system cards side by side
  const systems = [
    {
      title: "⚡ Phosphagen (ATP-PCr)",
      color: ACCENT2,
      lines: ["Duration: 0 – 10 sec", "Intensity: Maximum", "No oxygen needed", "Sprinting, jumping, throwing"]
    },
    {
      title: "🔥 Glycolytic",
      color: "FF6B6B",
      lines: ["Duration: 10 sec – 2 min", "Intensity: High", "Anaerobic (produces lactate)", "400 m run, wrestling"]
    },
    {
      title: "🌿 Oxidative",
      color: ACCENT,
      lines: ["Duration: > 2 min", "Intensity: Low–Moderate", "Aerobic (uses O₂)", "Marathon, cycling, rowing"]
    }
  ];

  systems.forEach((sys, i) => {
    const x = 0.3 + i * 3.2;
    slide.addShape(pres.ShapeType.roundRect, {
      x, y: 1.35, w: 3.0, h: 2.8,
      fill: { color: CARD_BG },
      line: { color: sys.color, width: 2 },
      rectRadius: 0.12
    });
    slide.addText(sys.title, {
      x: x + 0.1, y: 1.42, w: 2.8, h: 0.4,
      fontSize: 11, bold: true, color: sys.color, fontFace: "Calibri", align: "center", margin: 0
    });
    const items = sys.lines.map((l, j) => ({
      text: l,
      options: { bullet: true, breakLine: j < sys.lines.length - 1, fontSize: 10, color: LIGHT_TXT, fontFace: "Calibri" }
    }));
    slide.addText(items, {
      x: x + 0.12, y: 1.9, w: 2.76, h: 2.1, valign: "top", margin: 0
    });
  });

  slide.addText("All three systems operate simultaneously — dominance shifts with intensity & duration", {
    x: 0.3, y: 4.3, w: 9.4, h: 0.35,
    fontSize: 10, color: LIGHT_TXT, fontFace: "Calibri", italic: true, align: "center", margin: 0
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 4 – ATP & Metabolism
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("ATP & Cellular Metabolism", "Adenosine triphosphate — the universal energy currency");

  addCard(slide, 0.3, 1.35, 4.5, 1.6, "ATP Basics", [
    "ATP → ADP + Pi + energy (7.3 kcal/mol)",
    "Stored in tiny amounts (~85g total in the body)",
    "Must be continuously regenerated during exercise",
    "Rate of use can be 100× resting levels at max effort"
  ]);

  addCard(slide, 5.0, 1.35, 4.6, 1.6, "Substrate Fuels", [
    "Carbohydrates (glucose / glycogen) — fast, preferred at high intensity",
    "Fats (free fatty acids) — slow, large capacity, dominant at rest",
    "Proteins — minor fuel (<10%), mainly during prolonged fasting exercise"
  ]);

  // ATP regeneration pathway strip
  const steps = ["PCr Splitting", "→", "Glycolysis", "→", "Krebs Cycle", "→", "Electron Transport"];
  const colors = [ACCENT2, WHITE, "FF6B6B", WHITE, ACCENT, WHITE, "66CCFF"];
  steps.forEach((s, i) => {
    slide.addText(s, {
      x: 0.3 + i * 1.31, y: 3.1, w: 1.25, h: 0.38,
      fontSize: 9.5, bold: s !== "→", color: colors[i], fontFace: "Calibri",
      align: "center", fill: { color: s === "→" ? MID_BG : CARD_BG },
      margin: 4
    });
  });

  slide.addText("Metabolic pathways for ATP regeneration", {
    x: 0.3, y: 3.55, w: 9.4, h: 0.28,
    fontSize: 9, color: ACCENT, fontFace: "Calibri", italic: true, align: "center", margin: 0
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 5 – Cardiovascular Response
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("Cardiovascular Response to Exercise", "The heart and vasculature adjust to meet working muscle demands");

  const items = [
    { label: "Heart Rate (HR)", rest: "60-80 bpm", ex: "Up to 200 bpm", note: "Linear ↑ with intensity" },
    { label: "Stroke Volume (SV)", rest: "70 mL/beat", ex: "Up to 200 mL/beat", note: "Plateaus at ~40-60% VO₂max" },
    { label: "Cardiac Output (Q)", rest: "~5 L/min", ex: "Up to 40 L/min", note: "Q = HR × SV" },
    { label: "Blood Pressure (SBP)", rest: "~120 mmHg", ex: "180-200 mmHg", note: "DBP stays stable or ↓" },
    { label: "Blood Redistribution", rest: "~15-20% to muscles", ex: "~80-85% to muscles", note: "Vasoconstriction in gut/skin" }
  ];

  // Table header
  const headerItems = ["Parameter", "Rest", "Exercise", "Note"];
  const colX = [0.3, 2.4, 4.0, 6.0];
  const colW = [2.0, 1.5, 1.9, 3.55];
  headerItems.forEach((h, i) => {
    slide.addShape(pres.ShapeType.rect, { x: colX[i], y: 1.35, w: colW[i], h: 0.35, fill: { color: ACCENT } });
    slide.addText(h, {
      x: colX[i], y: 1.35, w: colW[i], h: 0.35,
      fontSize: 10, bold: true, color: DARK_BG, fontFace: "Calibri", align: "center", margin: 0
    });
  });

  items.forEach((row, r) => {
    const bg = r % 2 === 0 ? CARD_BG : "1A2F45";
    const cells = [row.label, row.rest, row.ex, row.note];
    cells.forEach((cell, i) => {
      slide.addShape(pres.ShapeType.rect, { x: colX[i], y: 1.72 + r * 0.52, w: colW[i], h: 0.5, fill: { color: bg } });
      slide.addText(cell, {
        x: colX[i] + 0.05, y: 1.72 + r * 0.52, w: colW[i] - 0.1, h: 0.5,
        fontSize: 9.5, color: i === 0 ? ACCENT2 : LIGHT_TXT, fontFace: "Calibri",
        align: i === 0 ? "left" : "center", valign: "middle", margin: 0
      });
    });
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 6 – Respiratory Response
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("Respiratory Response to Exercise", "Ventilation rises to match O₂ demand and CO₂ removal");

  addCard(slide, 0.3, 1.35, 4.5, 3.4, "Key Changes", [
    "Tidal volume (TV) increases first",
    "Breathing rate (f) rises as intensity increases",
    "Minute ventilation (VE) = TV × f — can reach 100-200 L/min",
    "O₂ extraction from each litre of air increases",
    "Ventilatory threshold (VT) signals shift to anaerobic metabolism",
    "Hyperpnea driven by CO₂, pH, and neural signals"
  ]);

  addCard(slide, 5.0, 1.35, 4.6, 1.55, "Oxygen Uptake", [
    "VO₂ rises linearly with workload",
    "VO₂max = maximum O₂ consumption capacity",
    "Typical values: 35-45 mL/kg/min (untrained), 70-85 (elite)"
  ]);

  addCard(slide, 5.0, 3.05, 4.6, 1.7, "Fick Equation", [
    "VO₂ = Q × (CaO₂ − CvO₂)",
    "Q = cardiac output",
    "CaO₂ = arterial O₂ content",
    "CvO₂ = venous O₂ content",
    "↑ extraction & ↑ cardiac output both raise VO₂"
  ]);
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 7 – Muscle Physiology
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("Muscle Physiology & Contraction", "From motor neuron to cross-bridge cycling");

  addCard(slide, 0.3, 1.35, 4.5, 3.6, "Sliding Filament Theory", [
    "Actin & myosin filaments slide past each other",
    "Myosin heads bind actin → power stroke → ADP released",
    "ATP binds myosin → detachment → re-cocking",
    "Ca²⁺ from SR exposes binding sites on actin (troponin-tropomyosin system)",
    "Action potential → T-tubule → Ca²⁺ release"
  ]);

  // Fiber type table
  const fiber_header = ["Fiber Type", "Speed", "Fatigue", "Fuel", "Use"];
  const fiber_data = [
    ["Type I (Slow)", "Slow", "Resistant", "Oxidative", "Endurance"],
    ["Type IIa", "Fast", "Moderate", "Mixed", "Middle-distance"],
    ["Type IIx", "Very Fast", "High", "Glycolytic", "Power/Sprint"]
  ];
  const fcolX = [5.0, 6.2, 6.95, 7.7, 8.5];
  const fcolW = [1.15, 0.72, 0.73, 0.78, 1.1];

  fiber_header.forEach((h, i) => {
    slide.addShape(pres.ShapeType.rect, { x: fcolX[i], y: 1.35, w: fcolW[i], h: 0.35, fill: { color: ACCENT } });
    slide.addText(h, {
      x: fcolX[i], y: 1.35, w: fcolW[i], h: 0.35,
      fontSize: 8.5, bold: true, color: DARK_BG, fontFace: "Calibri", align: "center", margin: 0
    });
  });

  fiber_data.forEach((row, r) => {
    const bg = r % 2 === 0 ? CARD_BG : "1A2F45";
    const rowColors = [ACCENT2, LIGHT_TXT, LIGHT_TXT, LIGHT_TXT, LIGHT_TXT];
    row.forEach((cell, i) => {
      slide.addShape(pres.ShapeType.rect, { x: fcolX[i], y: 1.72 + r * 0.5, w: fcolW[i], h: 0.48, fill: { color: bg } });
      slide.addText(cell, {
        x: fcolX[i] + 0.02, y: 1.72 + r * 0.5, w: fcolW[i] - 0.04, h: 0.48,
        fontSize: 8.5, color: rowColors[i], fontFace: "Calibri", align: "center", valign: "middle", margin: 0
      });
    });
  });

  addCard(slide, 5.0, 3.28, 4.6, 1.65, "Motor Unit Recruitment", [
    "Size principle: small (Type I) → large (Type II) units recruited progressively",
    "More force needed = more motor units recruited",
    "Rate coding: faster firing = stronger contraction"
  ]);
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 8 – VO₂max & Training Adaptations
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("VO₂max & Training Adaptations", "How the body changes with regular exercise training");

  const adaptations = [
    { area: "Heart", changes: ["↑ Left ventricular volume", "↑ Stroke volume at rest & exercise", "↓ Resting heart rate ('athlete's heart')"] },
    { area: "Muscles", changes: ["↑ Mitochondrial density", "↑ Myoglobin content", "↑ Capillary density", "↑ Oxidative enzyme activity"] },
    { area: "Lungs", changes: ["Minimal structural change", "↑ Efficiency of gas exchange", "↑ Respiratory muscle endurance"] },
    { area: "Blood", changes: ["↑ Blood volume (+10-15%)", "↑ Red blood cell mass", "↑ O₂ carrying capacity"] }
  ];

  adaptations.forEach((a, i) => {
    const x = 0.3 + (i % 2) * 4.85;
    const y = 1.4 + Math.floor(i / 2) * 2.0;
    addCard(slide, x, y, 4.5, 1.85, a.area, a.changes);
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 9 – Lactate Threshold
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = contentSlide("Lactate Threshold & Fatigue", "Key markers of endurance performance");

  addCard(slide, 0.3, 1.35, 4.5, 2.1, "Lactate Threshold (LT)", [
    "The exercise intensity at which blood lactate begins to rise above baseline",
    "LT1 (~2 mmol/L): first rise — conversational pace still possible",
    "LT2 / OBLA (~4 mmol/L): sustained high intensity becomes difficult",
    "Training increases LT → better endurance performance",
    "Occurs at ~50-60% VO₂max (untrained) vs ~80-90% (trained)"
  ]);

  addCard(slide, 5.0, 1.35, 4.6, 2.1, "Causes of Fatigue", [
    "ATP depletion (phosphagen & glycogen stores)",
    "Lactate / H⁺ accumulation → acidosis",
    "Pi (inorganic phosphate) interferes with cross-bridge cycling",
    "Central fatigue — CNS inhibition",
    "Dehydration and electrolyte disturbance"
  ]);

  // Key takeaway box
  slide.addShape(pres.ShapeType.roundRect, {
    x: 0.3, y: 3.6, w: 9.4, h: 0.72,
    fill: { color: "0A3028" },
    line: { color: ACCENT, width: 2 },
    rectRadius: 0.1
  });
  slide.addText([
    { text: "Key Insight: ", options: { bold: true, color: ACCENT } },
    { text: "Lactate is not merely a waste product — it is also a fuel and a signaling molecule. Trained muscles oxidize lactate efficiently.", options: { color: LIGHT_TXT } }
  ], {
    x: 0.45, y: 3.6, w: 9.1, h: 0.72,
    fontSize: 10, fontFace: "Calibri", valign: "middle", margin: 0
  });
}

// ══════════════════════════════════════════════════════════════════════════════
// SLIDE 10 – Summary
// ══════════════════════════════════════════════════════════════════════════════
{
  const slide = pres.addSlide();
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color: DARK_BG } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.12, fill: { color: ACCENT } });
  slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.505, w: 10, h: 0.12, fill: { color: ACCENT2 } });

  slide.addText("Summary", {
    x: 0.4, y: 0.2, w: 9.2, h: 0.55,
    fontSize: 26, bold: true, color: ACCENT, fontFace: "Calibri", align: "left", margin: 0
  });
  slide.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.8, w: 9.2, h: 0.03, fill: { color: ACCENT } });

  const summaryItems = [
    ["1", "Energy Systems", "ATP-PCr (0-10s) → Glycolytic (10s-2min) → Oxidative (>2min)"],
    ["2", "ATP & Metabolism", "Fuels: carbs, fats, protein; Krebs cycle & ETC produce most ATP"],
    ["3", "Cardiovascular", "↑ HR, ↑ SV, ↑ Q; blood redirected to working muscles"],
    ["4", "Respiratory", "↑ VE (TV × f); VO₂max is gold-standard fitness marker"],
    ["5", "Muscle", "Sliding filament, fiber types (I, IIa, IIx), motor unit recruitment"],
    ["6", "Adaptations & LT", "Training → ↑ mitochondria, ↑ stroke volume, ↑ lactate threshold"]
  ];

  summaryItems.forEach((item, i) => {
    const y = 1.0 + i * 0.68;
    slide.addShape(pres.ShapeType.ellipse, {
      x: 0.4, y: y + 0.05, w: 0.4, h: 0.4,
      fill: { color: i % 2 === 0 ? ACCENT : ACCENT2 }
    });
    slide.addText(item[0], {
      x: 0.4, y: y + 0.05, w: 0.4, h: 0.4,
      fontSize: 12, bold: true, color: DARK_BG, fontFace: "Calibri", align: "center", valign: "middle", margin: 0
    });
    slide.addText(item[1], {
      x: 0.88, y: y + 0.05, w: 2.0, h: 0.4,
      fontSize: 11, bold: true, color: i % 2 === 0 ? ACCENT : ACCENT2, fontFace: "Calibri", valign: "middle", margin: 0
    });
    slide.addText(item[2], {
      x: 2.95, y: y + 0.05, w: 6.8, h: 0.4,
      fontSize: 10, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle", margin: 0
    });
  });
}

// ─── Write file ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/exercise-physiology-ppt/Exercise_Physiology.pptx" })
  .then(() => console.log("Done: Exercise_Physiology.pptx"))
  .catch(err => console.error(err));
Running Command

cd /home/daytona/workspace/exercise-physiology-ppt && node create_ppt.js

Your PPT is ready! Download it here:

Exercise Physiology

Presentation · PPTX


What's inside (10 slides):
SlideTopic
1Title slide
2What is Exercise Physiology?
3Energy Systems (ATP-PCr, Glycolytic, Oxidative)
4ATP & Cellular Metabolism
5Cardiovascular Response (HR, SV, Q - table)
6Respiratory Response & Fick Equation
7Muscle Physiology, Fiber Types & Motor Units
8VO₂max & Training Adaptations
9Lactate Threshold & Fatigue
10Summary
The design uses a dark navy background with teal and orange accents - clean and professional for a class presentation.
This is a shared conversation. Sign in to Orris to start your own chat.