Exercise physiology class predestination i want simple matter PPT
mkdir -p /home/daytona/workspace/exercise-physiology-ppt
~/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));
cd /home/daytona/workspace/exercise-physiology-ppt && node create_ppt.js
Exercise Physiology
Presentation · PPTX
| Slide | Topic |
|---|---|
| 1 | Title slide |
| 2 | What is Exercise Physiology? |
| 3 | Energy Systems (ATP-PCr, Glycolytic, Oxidative) |
| 4 | ATP & Cellular Metabolism |
| 5 | Cardiovascular Response (HR, SV, Q - table) |
| 6 | Respiratory Response & Fick Equation |
| 7 | Muscle Physiology, Fiber Types & Motor Units |
| 8 | VO₂max & Training Adaptations |
| 9 | Lactate Threshold & Fatigue |
| 10 | Summary |