Generate a cross-sectional view of the human heart showing all four chambers, valves, and the coronary arteries with proper anatomical labeling.
cross-sectional view human heart four chambers valves coronary arteries anatomy
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"
mkdir -p /home/daytona/workspace/heart-anatomy
~/heart-anatomy/heart_cross_section.svg
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1100 900" width="1100" height="900" font-family="Georgia, 'Times New Roman', serif">
<!-- Background -->
<rect width="1100" height="900" fill="#f8f4ef"/>
<!-- Title -->
<text x="550" y="38" text-anchor="middle" font-size="22" font-weight="bold" fill="#1a1a2e">Cross-Sectional View of the Human Heart</text>
<text x="550" y="58" text-anchor="middle" font-size="13" fill="#555">Anterior view — Coronal section showing chambers, valves, and coronary arteries</text>
<!-- ═══════════════════════════════════════════════
GREAT VESSELS (top)
═══════════════════════════════════════════════ -->
<!-- Superior Vena Cava -->
<rect x="590" y="75" width="52" height="80" rx="10" fill="#6baed6" stroke="#2171b5" stroke-width="2"/>
<text x="616" y="120" text-anchor="middle" font-size="9" fill="white" font-weight="bold">SVC</text>
<!-- Aorta (ascending) -->
<rect x="500" y="65" width="52" height="90" rx="12" fill="#fc8d59" stroke="#d73027" stroke-width="2.5"/>
<text x="526" y="115" text-anchor="middle" font-size="9" fill="white" font-weight="bold">Aorta</text>
<!-- Pulmonary Trunk -->
<rect x="430" y="78" width="50" height="70" rx="10" fill="#74c476" stroke="#238b45" stroke-width="2"/>
<text x="455" y="118" text-anchor="middle" font-size="8" fill="white" font-weight="bold">Pulm.</text>
<text x="455" y="128" text-anchor="middle" font-size="8" fill="white" font-weight="bold">Trunk</text>
<!-- Pulmonary veins (right) -->
<rect x="680" y="200" width="60" height="28" rx="8" fill="#fc8d59" stroke="#d73027" stroke-width="1.5"/>
<text x="710" y="218" text-anchor="middle" font-size="8" fill="white" font-weight="bold">Pulm. Veins (R)</text>
<!-- Pulmonary veins (left) -->
<rect x="290" y="200" width="60" height="28" rx="8" fill="#fc8d59" stroke="#d73027" stroke-width="1.5"/>
<text x="320" y="218" text-anchor="middle" font-size="8" fill="white" font-weight="bold">Pulm. Veins (L)</text>
<!-- Inferior Vena Cava -->
<rect x="590" y="710" width="52" height="75" rx="10" fill="#6baed6" stroke="#2171b5" stroke-width="2"/>
<text x="616" y="752" text-anchor="middle" font-size="9" fill="white" font-weight="bold">IVC</text>
<!-- ═══════════════════════════════════════════════
HEART OUTLINE (pericardium silhouette)
═══════════════════════════════════════════════ -->
<ellipse cx="530" cy="450" rx="270" ry="295" fill="none" stroke="#ccb89a" stroke-width="3" stroke-dasharray="8,4"/>
<!-- ═══════════════════════════════════════════════
RIGHT ATRIUM (RA) — top-right, blue (deoxygenated)
═══════════════════════════════════════════════ -->
<path d="M 590,145 Q 660,155 690,200 Q 720,245 710,310 Q 700,355 660,370 Q 620,378 590,360 L 590,145 Z"
fill="#aec6cf" stroke="#2171b5" stroke-width="2.5"/>
<!-- RA label -->
<text x="650" y="270" text-anchor="middle" font-size="15" font-weight="bold" fill="#1a3a5c">RA</text>
<text x="650" y="288" text-anchor="middle" font-size="10" fill="#1a3a5c">Right Atrium</text>
<!-- ═══════════════════════════════════════════════
LEFT ATRIUM (LA) — top-left, red (oxygenated)
═══════════════════════════════════════════════ -->
<path d="M 500,145 Q 430,155 400,200 Q 370,245 380,310 Q 390,355 430,370 Q 470,378 500,360 L 500,145 Z"
fill="#f4a6a0" stroke="#d73027" stroke-width="2.5"/>
<!-- LA label -->
<text x="435" y="270" text-anchor="middle" font-size="15" font-weight="bold" fill="#7a1a1a">LA</text>
<text x="435" y="288" text-anchor="middle" font-size="10" fill="#7a1a1a">Left Atrium</text>
<!-- Interatrial Septum -->
<line x1="545" y1="150" x2="545" y2="370" stroke="#6b4c3b" stroke-width="3"/>
<!-- ═══════════════════════════════════════════════
RIGHT VENTRICLE (RV) — bottom-right, blue
═══════════════════════════════════════════════ -->
<path d="M 590,370 Q 660,378 700,420 Q 740,468 730,540 Q 720,600 690,640 Q 660,670 620,680 Q 590,685 570,680 L 570,370 Q 580,367 590,370 Z"
fill="#9bbfd4" stroke="#2171b5" stroke-width="2.5"/>
<text x="655" y="530" text-anchor="middle" font-size="15" font-weight="bold" fill="#1a3a5c">RV</text>
<text x="655" y="548" text-anchor="middle" font-size="10" fill="#1a3a5c">Right Ventricle</text>
<!-- RV wall (thinner) hint -->
<path d="M 700,420 Q 738,468 728,540 Q 718,598 688,638" fill="none" stroke="#2171b5" stroke-width="5" opacity="0.3"/>
<!-- ═══════════════════════════════════════════════
LEFT VENTRICLE (LV) — bottom-left, red
═══════════════════════════════════════════════ -->
<path d="M 500,370 Q 430,378 390,420 Q 352,468 362,540 Q 372,600 402,640 Q 432,670 470,680 Q 500,685 520,680 L 520,370 Q 510,367 500,370 Z"
fill="#e8858a" stroke="#d73027" stroke-width="2.5"/>
<text x="432" y="530" text-anchor="middle" font-size="15" font-weight="bold" fill="#7a1a1a">LV</text>
<text x="432" y="548" text-anchor="middle" font-size="10" fill="#7a1a1a">Left Ventricle</text>
<!-- LV wall (thicker) hint -->
<path d="M 390,420 Q 353,468 363,540 Q 373,598 403,638" fill="none" stroke="#d73027" stroke-width="10" opacity="0.25"/>
<!-- Interventricular Septum -->
<line x1="545" y1="370" x2="545" y2="685" stroke="#6b4c3b" stroke-width="4"/>
<!-- Apex -->
<ellipse cx="545" cy="700" rx="35" ry="20" fill="#c47c7c" stroke="#6b4c3b" stroke-width="2"/>
<text x="545" y="705" text-anchor="middle" font-size="9" fill="white" font-weight="bold">Apex</text>
<!-- ═══════════════════════════════════════════════
VALVES
═══════════════════════════════════════════════ -->
<!-- Tricuspid Valve (RA → RV) -->
<ellipse cx="620" cy="375" rx="32" ry="12" fill="#f7dc6f" stroke="#b7950b" stroke-width="2.5"/>
<!-- Valve leaflets -->
<line x1="590" y1="375" x2="650" y2="375" stroke="#b7950b" stroke-width="2"/>
<line x1="605" y1="365" x2="610" y2="385" stroke="#b7950b" stroke-width="1.5"/>
<line x1="620" y1="363" x2="620" y2="387" stroke="#b7950b" stroke-width="1.5"/>
<line x1="635" y1="365" x2="630" y2="385" stroke="#b7950b" stroke-width="1.5"/>
<!-- Mitral Valve (LA → LV) -->
<ellipse cx="470" cy="375" rx="32" ry="12" fill="#f7dc6f" stroke="#b7950b" stroke-width="2.5"/>
<line x1="440" y1="375" x2="500" y2="375" stroke="#b7950b" stroke-width="2"/>
<line x1="455" y1="365" x2="458" y2="385" stroke="#b7950b" stroke-width="1.5"/>
<line x1="470" y1="363" x2="470" y2="387" stroke="#b7950b" stroke-width="1.5"/>
<line x1="485" y1="365" x2="482" y2="385" stroke="#b7950b" stroke-width="1.5"/>
<!-- Aortic Valve (LV → Aorta) -->
<ellipse cx="524" cy="153" rx="25" ry="10" fill="#e67e22" stroke="#935116" stroke-width="2.5"/>
<!-- Semilunar cusps -->
<path d="M 502,153 Q 514,143 524,153 Q 534,143 544,153" fill="none" stroke="#935116" stroke-width="2"/>
<text x="524" y="150" text-anchor="middle" font-size="7" fill="white" font-weight="bold">AV</text>
<!-- Pulmonary Valve (RV → PA) -->
<ellipse cx="455" cy="152" rx="22" ry="10" fill="#27ae60" stroke="#1a7a42" stroke-width="2.5"/>
<path d="M 435,152 Q 445,143 455,152 Q 465,143 475,152" fill="none" stroke="#1a7a42" stroke-width="2"/>
<text x="455" y="149" text-anchor="middle" font-size="7" fill="white" font-weight="bold">PV</text>
<!-- Chordae Tendineae (tricuspid) -->
<line x1="600" y1="383" x2="620" y2="430" stroke="#8e44ad" stroke-width="1.5" stroke-dasharray="4,2"/>
<line x1="620" y1="385" x2="630" y2="445" stroke="#8e44ad" stroke-width="1.5" stroke-dasharray="4,2"/>
<line x1="640" y1="382" x2="640" y2="430" stroke="#8e44ad" stroke-width="1.5" stroke-dasharray="4,2"/>
<!-- Papillary muscle (RV) -->
<ellipse cx="625" cy="440" rx="20" ry="8" fill="#7d3c98" opacity="0.6"/>
<text x="625" y="443" text-anchor="middle" font-size="7" fill="white">Pap. M.</text>
<!-- Chordae Tendineae (mitral) -->
<line x1="452" y1="383" x2="445" y2="430" stroke="#8e44ad" stroke-width="1.5" stroke-dasharray="4,2"/>
<line x1="470" y1="385" x2="462" y2="445" stroke="#8e44ad" stroke-width="1.5" stroke-dasharray="4,2"/>
<line x1="488" y1="382" x2="478" y2="430" stroke="#8e44ad" stroke-width="1.5" stroke-dasharray="4,2"/>
<!-- Papillary muscle (LV) -->
<ellipse cx="463" cy="440" rx="20" ry="8" fill="#7d3c98" opacity="0.6"/>
<text x="463" y="443" text-anchor="middle" font-size="7" fill="white">Pap. M.</text>
<!-- ═══════════════════════════════════════════════
CORONARY ARTERIES
═══════════════════════════════════════════════ -->
<!-- Left Main Coronary Artery (LMCA) origin from aorta -->
<path d="M 505,178 Q 490,185 480,195 Q 468,205 460,220" fill="none" stroke="#c0392b" stroke-width="4" stroke-linecap="round"/>
<!-- Left Anterior Descending (LAD) -->
<path d="M 460,220 Q 452,250 448,290 Q 444,340 444,400 Q 443,460 445,530 Q 446,590 470,650 Q 495,690 545,710"
fill="none" stroke="#c0392b" stroke-width="3.5" stroke-linecap="round"/>
<!-- Left Circumflex (LCx) -->
<path d="M 460,220 Q 440,225 415,235 Q 390,248 375,270 Q 360,295 358,330 Q 356,370 365,405"
fill="none" stroke="#e74c3c" stroke-width="3" stroke-linecap="round" stroke-dasharray="none"/>
<!-- Right Coronary Artery (RCA) origin from aorta -->
<path d="M 548,178 Q 565,185 578,198 Q 600,215 620,228 Q 650,248 665,275 Q 680,305 678,345 Q 676,385 660,415 Q 645,445 625,465 Q 600,485 575,510 Q 558,528 548,555"
fill="none" stroke="#e67e22" stroke-width="3.5" stroke-linecap="round"/>
<!-- Diagonal branch (LAD) -->
<path d="M 450,320 Q 435,335 420,355 Q 405,375 398,400"
fill="none" stroke="#c0392b" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
<!-- Obtuse Marginal (LCx branch) -->
<path d="M 370,380 Q 358,410 360,445 Q 363,480 375,510"
fill="none" stroke="#e74c3c" stroke-width="2" stroke-linecap="round" stroke-dasharray="5,3"/>
<!-- Posterior Descending Artery (PDA from RCA) -->
<path d="M 548,555 Q 548,580 548,600 Q 548,640 548,680"
fill="none" stroke="#e67e22" stroke-width="2.5" stroke-linecap="round"/>
<!-- ═══════════════════════════════════════════════
LABEL LINES + TEXT — Coronary arteries
═══════════════════════════════════════════════ -->
<!-- LAD label -->
<line x1="442" y1="490" x2="340" y2="500" stroke="#c0392b" stroke-width="1.2"/>
<rect x="240" y="490" width="100" height="22" rx="4" fill="#fff5f5" stroke="#c0392b" stroke-width="1"/>
<text x="290" y="505" text-anchor="middle" font-size="11" fill="#c0392b" font-weight="bold">LAD</text>
<!-- LCx label -->
<line x1="360" y1="350" x2="260" y2="340" stroke="#e74c3c" stroke-width="1.2"/>
<rect x="150" y="330" width="110" height="22" rx="4" fill="#fff5f5" stroke="#e74c3c" stroke-width="1"/>
<text x="205" y="345" text-anchor="middle" font-size="11" fill="#e74c3c" font-weight="bold">L Circumflex (LCx)</text>
<!-- LMCA label -->
<line x1="470" y1="208" x2="380" y2="195" stroke="#c0392b" stroke-width="1.2"/>
<rect x="245" y="183" width="135" height="24" rx="4" fill="#fff5f5" stroke="#c0392b" stroke-width="1"/>
<text x="313" y="199" text-anchor="middle" font-size="11" fill="#c0392b" font-weight="bold">L Main Coronary (LMCA)</text>
<!-- RCA label -->
<line x1="672" y1="320" x2="790" y2="310" stroke="#e67e22" stroke-width="1.2"/>
<rect x="790" y="298" width="175" height="22" rx="4" fill="#fff8f0" stroke="#e67e22" stroke-width="1"/>
<text x="878" y="313" text-anchor="middle" font-size="11" fill="#e67e22" font-weight="bold">Right Coronary Art. (RCA)</text>
<!-- PDA label -->
<line x1="548" y1="620" x2="670" y2="625" stroke="#e67e22" stroke-width="1.2"/>
<rect x="670" y="613" width="175" height="22" rx="4" fill="#fff8f0" stroke="#e67e22" stroke-width="1"/>
<text x="758" y="628" text-anchor="middle" font-size="11" fill="#e67e22" font-weight="bold">Post. Descending Art. (PDA)</text>
<!-- Diagonal label -->
<line x1="405" y1="375" x2="310" y2="395" stroke="#c0392b" stroke-width="1.2"/>
<rect x="185" y="383" width="125" height="22" rx="4" fill="#fff5f5" stroke="#c0392b" stroke-width="1"/>
<text x="248" y="398" text-anchor="middle" font-size="11" fill="#c0392b" font-weight="bold">Diagonal Branch</text>
<!-- ═══════════════════════════════════════════════
LABEL LINES + TEXT — Chambers & Vessels
═══════════════════════════════════════════════ -->
<!-- Aortic Valve label -->
<line x1="548" y1="153" x2="620" y2="135" stroke="#935116" stroke-width="1.2"/>
<rect x="620" y="122" width="130" height="22" rx="4" fill="#fef9e7" stroke="#935116" stroke-width="1"/>
<text x="685" y="137" text-anchor="middle" font-size="11" fill="#935116" font-weight="bold">Aortic Valve (AV)</text>
<!-- Pulmonary Valve label -->
<line x1="432" y1="152" x2="340" y2="137" stroke="#1a7a42" stroke-width="1.2"/>
<rect x="200" y="124" width="140" height="22" rx="4" fill="#eafaf1" stroke="#1a7a42" stroke-width="1"/>
<text x="270" y="139" text-anchor="middle" font-size="11" fill="#1a7a42" font-weight="bold">Pulmonary Valve (PV)</text>
<!-- Tricuspid Valve label -->
<line x1="652" y1="375" x2="790" y2="365" stroke="#b7950b" stroke-width="1.2"/>
<rect x="790" y="352" width="155" height="22" rx="4" fill="#fef9e7" stroke="#b7950b" stroke-width="1"/>
<text x="868" y="367" text-anchor="middle" font-size="11" fill="#b7950b" font-weight="bold">Tricuspid Valve (TV)</text>
<!-- Mitral Valve label -->
<line x1="438" y1="375" x2="310" y2="438" stroke="#b7950b" stroke-width="1.2"/>
<rect x="160" y="425" width="150" height="22" rx="4" fill="#fef9e7" stroke="#b7950b" stroke-width="1"/>
<text x="235" y="440" text-anchor="middle" font-size="11" fill="#b7950b" font-weight="bold">Mitral Valve (MV)</text>
<!-- Interventricular Septum label -->
<line x1="545" y1="550" x2="700" y2="575" stroke="#6b4c3b" stroke-width="1.2"/>
<rect x="700" y="562" width="195" height="22" rx="4" fill="#f5efe7" stroke="#6b4c3b" stroke-width="1"/>
<text x="798" y="577" text-anchor="middle" font-size="11" fill="#6b4c3b" font-weight="bold">Interventricular Septum</text>
<!-- Interatrial Septum label -->
<line x1="545" y1="250" x2="700" y2="235" stroke="#6b4c3b" stroke-width="1.2"/>
<rect x="700" y="222" width="175" height="22" rx="4" fill="#f5efe7" stroke="#6b4c3b" stroke-width="1"/>
<text x="788" y="237" text-anchor="middle" font-size="11" fill="#6b4c3b" font-weight="bold">Interatrial Septum</text>
<!-- SVC label -->
<line x1="642" y1="112" x2="790" y2="95" stroke="#2171b5" stroke-width="1.2"/>
<rect x="790" y="82" width="185" height="22" rx="4" fill="#eff6fb" stroke="#2171b5" stroke-width="1"/>
<text x="883" y="97" text-anchor="middle" font-size="11" fill="#2171b5" font-weight="bold">Superior Vena Cava (SVC)</text>
<!-- IVC label -->
<line x1="642" y1="745" x2="790" y2="755" stroke="#2171b5" stroke-width="1.2"/>
<rect x="790" y="742" width="185" height="22" rx="4" fill="#eff6fb" stroke="#2171b5" stroke-width="1"/>
<text x="883" y="757" text-anchor="middle" font-size="11" fill="#2171b5" font-weight="bold">Inferior Vena Cava (IVC)</text>
<!-- Aorta label -->
<line x1="526" y1="100" x2="420" y2="68" stroke="#d73027" stroke-width="1.2"/>
<rect x="295" y="55" width="125" height="22" rx="4" fill="#fff5f5" stroke="#d73027" stroke-width="1"/>
<text x="358" y="70" text-anchor="middle" font-size="11" fill="#d73027" font-weight="bold">Ascending Aorta</text>
<!-- Pulmonary Trunk label -->
<line x1="430" y1="100" x2="340" y2="78" stroke="#238b45" stroke-width="1.2"/>
<rect x="195" y="65" width="145" height="22" rx="4" fill="#eafaf1" stroke="#238b45" stroke-width="1"/>
<text x="268" y="80" text-anchor="middle" font-size="11" fill="#238b45" font-weight="bold">Pulmonary Trunk</text>
<!-- Pulmonary veins labels -->
<text x="710" y="195" text-anchor="middle" font-size="10" fill="#d73027">R Pulmonary Veins</text>
<text x="320" y="195" text-anchor="middle" font-size="10" fill="#d73027">L Pulmonary Veins</text>
<!-- Chordae Tendineae label -->
<line x1="630" y1="415" x2="790" y2="420" stroke="#8e44ad" stroke-width="1.2"/>
<rect x="790" y="407" width="165" height="22" rx="4" fill="#f5eef8" stroke="#8e44ad" stroke-width="1"/>
<text x="873" y="422" text-anchor="middle" font-size="11" fill="#8e44ad" font-weight="bold">Chordae Tendineae</text>
<!-- Papillary Muscle label -->
<line x1="638" y1="445" x2="790" y2="452" stroke="#7d3c98" stroke-width="1.2"/>
<rect x="790" y="439" width="165" height="22" rx="4" fill="#f5eef8" stroke="#7d3c98" stroke-width="1"/>
<text x="873" y="454" text-anchor="middle" font-size="11" fill="#7d3c98" font-weight="bold">Papillary Muscles</text>
<!-- Fossa Ovalis (depression in interatrial septum) -->
<ellipse cx="545" cy="300" rx="12" ry="18" fill="#d4b8a0" stroke="#6b4c3b" stroke-width="1.5" opacity="0.8"/>
<line x1="557" y1="300" x2="640" y2="300" stroke="#6b4c3b" stroke-width="1.2"/>
<rect x="640" y="287" width="115" height="22" rx="4" fill="#f5efe7" stroke="#6b4c3b" stroke-width="1"/>
<text x="698" y="302" text-anchor="middle" font-size="11" fill="#6b4c3b" font-weight="bold">Fossa Ovalis</text>
<!-- ═══════════════════════════════════════════════
LV WALL THICKNESS ANNOTATION
═══════════════════════════════════════════════ -->
<line x1="362" y1="520" x2="262" y2="520" stroke="#d73027" stroke-width="1.2"/>
<rect x="110" y="507" width="152" height="22" rx="4" fill="#fff5f5" stroke="#d73027" stroke-width="1"/>
<text x="186" y="522" text-anchor="middle" font-size="11" fill="#d73027" font-weight="bold">LV Wall (~10–12 mm)</text>
<!-- RV wall annotation -->
<line x1="730" y1="500" x2="820" y2="500" stroke="#2171b5" stroke-width="1.2"/>
<rect x="820" y="487" width="152" height="22" rx="4" fill="#eff6fb" stroke="#2171b5" stroke-width="1"/>
<text x="896" y="502" text-anchor="middle" font-size="11" fill="#2171b5" font-weight="bold">RV Wall (~3–5 mm)</text>
<!-- ═══════════════════════════════════════════════
LEGEND
═══════════════════════════════════════════════ -->
<rect x="30" y="785" width="1040" height="100" rx="8" fill="#fffde7" stroke="#e2c94e" stroke-width="1.5"/>
<text x="550" y="806" text-anchor="middle" font-size="13" font-weight="bold" fill="#333">Legend</text>
<!-- Legend items -->
<!-- Oxygenated blood -->
<rect x="50" y="815" width="18" height="14" fill="#e8858a" stroke="#d73027"/>
<text x="74" y="827" font-size="11" fill="#333">Oxygenated blood (left heart)</text>
<!-- Deoxygenated blood -->
<rect x="50" y="835" width="18" height="14" fill="#9bbfd4" stroke="#2171b5"/>
<text x="74" y="847" font-size="11" fill="#333">Deoxygenated blood (right heart)</text>
<!-- AV valves -->
<rect x="270" y="815" width="18" height="14" fill="#f7dc6f" stroke="#b7950b"/>
<text x="294" y="827" font-size="11" fill="#333">AV Valves (Tricuspid, Mitral)</text>
<!-- Semilunar valves -->
<rect x="270" y="835" width="18" height="14" fill="#e67e22" stroke="#935116"/>
<text x="294" y="847" font-size="11" fill="#333">Semilunar Valves (Aortic, Pulmonary)</text>
<!-- Coronary arteries -->
<line x1="490" y1="822" x2="510" y2="822" stroke="#c0392b" stroke-width="3"/>
<text x="515" y="827" font-size="11" fill="#333">Left Coronary System</text>
<line x1="490" y1="842" x2="510" y2="842" stroke="#e67e22" stroke-width="3"/>
<text x="515" y="847" font-size="11" fill="#333">Right Coronary System (RCA)</text>
<!-- Chordae -->
<line x1="690" y1="822" x2="710" y2="822" stroke="#8e44ad" stroke-width="2" stroke-dasharray="4,2"/>
<text x="715" y="827" font-size="11" fill="#333">Chordae Tendineae</text>
<!-- Septum -->
<line x1="690" y1="842" x2="710" y2="842" stroke="#6b4c3b" stroke-width="3"/>
<text x="715" y="847" font-size="11" fill="#333">Interatrial / Interventricular Septum</text>
<!-- Attribution -->
<text x="550" y="872" text-anchor="middle" font-size="10" fill="#888" font-style="italic">Orris Medical Illustration · Anatomically accurate schematic for educational use</text>
</svg>
which inkscape && inkscape /home/daytona/workspace/heart-anatomy/heart_cross_section.svg --export-filename=/home/daytona/workspace/heart-anatomy/heart_cross_section.png --export-width=1100 --export-height=900 2>&1 || echo "inkscape not available"
python3 -c "import cairosvg; print('cairosvg ok')" 2>&1 || python3 -c "from svglib.svglib import svg2rlg; print('svglib ok')" 2>&1 || echo "neither available"
python3 -c "from PIL import Image; print('PIL ok')" 2>&1; python3 -c "import matplotlib; print('matplotlib ok')" 2>&1
~/heart-anatomy/generate_heart.py
"""
Cross-sectional anatomical illustration of the human heart.
Shows all four chambers, valves, and coronary arteries with labels.
"""
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.patches import FancyArrowPatch, Arc, FancyBboxPatch, Ellipse, Wedge, PathPatch
import matplotlib.path as mpath
import numpy as np
fig, ax = plt.subplots(figsize=(16, 14), facecolor='#f5f0ea')
ax.set_xlim(0, 16)
ax.set_ylim(0, 14)
ax.set_aspect('equal')
ax.axis('off')
fig.patch.set_facecolor('#f5f0ea')
# ── colour palette ────────────────────────────────────────────────
C_RA = '#aecde8' # right atrium (deoxygenated, blue tint)
C_RV = '#7fb3d3' # right ventricle
C_LA = '#f4a6a0' # left atrium (oxygenated, red tint)
C_LV = '#e87e7e' # left ventricle
C_WALL = '#8b4513' # myocardium / septum
C_VALVE = '#f0c040' # valve leaflets
C_AORTA = '#ff6b35' # aorta
C_PA = '#2ecc71' # pulmonary artery
C_PV = '#e8503a' # pulmonary veins (oxygenated returning)
C_VC = '#5b9bd5' # venae cavae (deoxygenated)
C_LCA = '#c0392b' # left coronary system
C_RCA = '#e67e22' # right coronary artery
C_CHORD = '#8e44ad' # chordae tendineae
C_SEP = '#5d4037' # septum line
C_BG = '#f5f0ea'
# ── helper: draw filled polygon ───────────────────────────────────
def poly(ax, pts, fc, ec=C_WALL, lw=1.8, alpha=1.0, zorder=2):
p = plt.Polygon(pts, closed=True, facecolor=fc, edgecolor=ec,
linewidth=lw, alpha=alpha, zorder=zorder)
ax.add_patch(p)
return p
def label(ax, x, y, text, fontsize=9, color='#1a1a2e', ha='center',
va='center', bold=False, zorder=10):
fw = 'bold' if bold else 'normal'
ax.text(x, y, text, fontsize=fontsize, color=color,
ha=ha, va=va, fontweight=fw,
fontfamily='DejaVu Sans', zorder=zorder)
def anno(ax, xy, xytext, text, fontsize=8.5, color='#222', arrowcolor='#444'):
ax.annotate(text, xy=xy, xytext=xytext,
fontsize=fontsize, color=color, ha='center',
fontfamily='DejaVu Sans',
bbox=dict(boxstyle='round,pad=0.3', facecolor='white',
edgecolor=arrowcolor, linewidth=0.8, alpha=0.92),
arrowprops=dict(arrowstyle='->', color=arrowcolor,
lw=1.2, connectionstyle='arc3,rad=0.1'),
zorder=15)
# ════════════════════════════════════════════════════════════════════
# PERICARDIUM SILHOUETTE
# ════════════════════════════════════════════════════════════════════
peri = Ellipse((8, 6.5), width=11, height=11.5, facecolor='none',
edgecolor='#ccb89a', linewidth=2.5, linestyle='--',
zorder=1, alpha=0.7)
ax.add_patch(peri)
# ════════════════════════════════════════════════════════════════════
# GREAT VESSELS (top)
# ════════════════════════════════════════════════════════════════════
# Superior Vena Cava (SVC) – right side, blue
svc = FancyBboxPatch((8.7, 11.0), 1.0, 1.9, boxstyle="round,pad=0.1",
facecolor=C_VC, edgecolor='#2171b5', linewidth=2, zorder=3)
ax.add_patch(svc)
label(ax, 9.2, 11.95, 'SVC', fontsize=8, color='white', bold=True)
# Ascending Aorta – slightly left of SVC, orange
aorta = FancyBboxPatch((7.2, 11.2), 1.1, 1.7, boxstyle="round,pad=0.12",
facecolor=C_AORTA, edgecolor='#d35400', linewidth=2.5, zorder=3)
ax.add_patch(aorta)
label(ax, 7.75, 12.1, 'Aorta', fontsize=8, color='white', bold=True)
# Pulmonary Trunk – left of aorta, green
pa_trunk = FancyBboxPatch((6.0, 11.3), 0.95, 1.5, boxstyle="round,pad=0.1",
facecolor=C_PA, edgecolor='#1a7a42', linewidth=2, zorder=3)
ax.add_patch(pa_trunk)
label(ax, 6.47, 12.05, 'PA\nTrunk', fontsize=7, color='white', bold=True)
# Pulmonary veins (right) – right side, feeding LA
pv_r = FancyBboxPatch((10.6, 9.4), 1.2, 0.5, boxstyle="round,pad=0.08",
facecolor=C_PV, edgecolor='#c0392b', linewidth=1.5, zorder=3)
ax.add_patch(pv_r)
label(ax, 11.2, 9.65, 'R PVs', fontsize=7, color='white', bold=True)
# Pulmonary veins (left) – left side, feeding LA
pv_l = FancyBboxPatch((4.2, 9.4), 1.2, 0.5, boxstyle="round,pad=0.08",
facecolor=C_PV, edgecolor='#c0392b', linewidth=1.5, zorder=3)
ax.add_patch(pv_l)
label(ax, 4.8, 9.65, 'L PVs', fontsize=7, color='white', bold=True)
# IVC – bottom right, blue
ivc = FancyBboxPatch((8.7, 1.1), 1.0, 1.6, boxstyle="round,pad=0.1",
facecolor=C_VC, edgecolor='#2171b5', linewidth=2, zorder=3)
ax.add_patch(ivc)
label(ax, 9.2, 1.9, 'IVC', fontsize=8, color='white', bold=True)
# ════════════════════════════════════════════════════════════════════
# CHAMBERS
# ════════════════════════════════════════════════════════════════════
# ── RIGHT ATRIUM (RA) ─────────────────────────────────────────────
ra_pts = [
(8.7, 11.0),(9.7, 11.0),(10.2, 10.5),(10.6, 9.8),(10.6, 8.8),
(10.2, 8.0),(9.6, 7.6),(9.0, 7.5),(8.7, 7.5)
]
poly(ax, ra_pts, C_RA, ec='#2171b5', lw=2, zorder=4)
label(ax, 9.6, 9.4, 'RA', fontsize=17, color='#1a3a5c', bold=True, zorder=6)
label(ax, 9.6, 8.9, 'Right Atrium', fontsize=8.5, color='#1a3a5c', zorder=6)
# ── LEFT ATRIUM (LA) ─────────────────────────────────────────────
la_pts = [
(7.3, 11.2),(6.2, 11.3),(5.7, 10.5),(5.2, 9.7),(5.2, 8.8),
(5.6, 8.0),(6.2, 7.6),(7.0, 7.5),(7.3, 7.5)
]
poly(ax, la_pts, C_LA, ec='#c0392b', lw=2, zorder=4)
label(ax, 6.3, 9.4, 'LA', fontsize=17, color='#7a1a1a', bold=True, zorder=6)
label(ax, 6.3, 8.9, 'Left Atrium', fontsize=8.5, color='#7a1a1a', zorder=6)
# ── Interatrial Septum ────────────────────────────────────────────
ax.plot([8.0, 8.0], [11.2, 7.5], color=C_SEP, linewidth=4, zorder=5, solid_capstyle='round')
# Fossa ovalis
fossa = Ellipse((8.0, 9.5), 0.45, 0.7, facecolor='#c9a87c',
edgecolor=C_SEP, linewidth=1.5, zorder=5, alpha=0.9)
ax.add_patch(fossa)
# ── RIGHT VENTRICLE (RV) ─────────────────────────────────────────
rv_pts = [
(8.7, 7.5),(9.5, 7.6),(10.3, 8.0),(11.0, 8.8),(11.4, 9.6),
(11.2, 10.3),(10.8, 10.8),(10.8, 7.5),(10.5, 5.5),(10.0, 4.0),
(9.2, 3.0),(8.5, 2.6),(8.1, 2.5),(8.0, 2.5),(8.0, 7.5)
]
poly(ax, rv_pts, C_RV, ec='#2171b5', lw=2, zorder=4)
label(ax, 9.5, 5.8, 'RV', fontsize=17, color='#1a3a5c', bold=True, zorder=6)
label(ax, 9.5, 5.25, 'Right Ventricle', fontsize=8.5, color='#1a3a5c', zorder=6)
# ── LEFT VENTRICLE (LV) ──────────────────────────────────────────
lv_pts = [
(7.3, 7.5),(6.5, 7.6),(5.7, 8.0),(5.0, 8.8),(4.6, 9.6),
(4.8, 10.3),(5.2, 10.8),(5.2, 7.5),(5.5, 5.5),(6.0, 4.0),
(6.8, 3.0),(7.5, 2.6),(7.9, 2.5),(8.0, 2.5),(8.0, 7.5)
]
poly(ax, lv_pts, C_LV, ec='#c0392b', lw=2.5, zorder=4)
label(ax, 6.5, 5.8, 'LV', fontsize=17, color='#7a1a1a', bold=True, zorder=6)
label(ax, 6.5, 5.25, 'Left Ventricle', fontsize=8.5, color='#7a1a1a', zorder=6)
# ── Interventricular Septum ───────────────────────────────────────
ax.plot([8.0, 8.0], [7.5, 2.5], color=C_SEP, linewidth=5, zorder=5, solid_capstyle='round')
# ── Apex ─────────────────────────────────────────────────────────
apex = Ellipse((8.0, 2.3), 1.3, 0.7, facecolor='#b86060',
edgecolor=C_SEP, linewidth=2, zorder=5)
ax.add_patch(apex)
label(ax, 8.0, 2.3, 'Apex', fontsize=8, color='white', bold=True, zorder=6)
# LV wall thickness indicator
ax.annotate('', xy=(4.75, 5.5), xytext=(5.65, 5.5),
arrowprops=dict(arrowstyle='<->', color='#c0392b', lw=1.8))
# ════════════════════════════════════════════════════════════════════
# VALVES
# ════════════════════════════════════════════════════════════════════
def draw_valve(ax, cx, cy, rx, ry, n_leaflets=3, color=C_VALVE,
ec='#b7950b', lw=2, zorder=7):
"""Draw a valve as an ellipse with leaflet lines."""
v = Ellipse((cx, cy), rx*2, ry*2, facecolor=color,
edgecolor=ec, linewidth=lw, zorder=zorder)
ax.add_patch(v)
# Leaflet lines
angles = np.linspace(-rx, rx, n_leaflets+1)[1:-1]
for xo in angles:
ax.plot([cx+xo, cx+xo*0.6], [cy-ry, cy+ry],
color=ec, linewidth=1.5, zorder=zorder+1)
# Tricuspid Valve (RA → RV)
draw_valve(ax, cx=9.0, cy=7.5, rx=0.65, ry=0.22, n_leaflets=3,
color=C_VALVE, ec='#b7950b')
# Mitral Valve (LA → LV) — bicuspid
draw_valve(ax, cx=7.0, cy=7.5, rx=0.58, ry=0.22, n_leaflets=2,
color='#f5c518', ec='#b7950b')
# Aortic Valve (LV → Aorta) — semilunar, 3 cusps
draw_valve(ax, cx=7.75, cy=11.3, rx=0.48, ry=0.18, n_leaflets=3,
color='#e8870a', ec='#935116')
# Pulmonary Valve (RV → PA)
draw_valve(ax, cx=6.47, cy=11.35, rx=0.40, ry=0.18, n_leaflets=3,
color='#1abc9c', ec='#0e8c70')
# ── Chordae Tendineae & Papillary Muscles ─────────────────────────
# Tricuspid chordae
for xo, xt in [(-0.4, -0.2),(0, 0),(0.4, 0.2)]:
ax.plot([9.0+xo, 9.0+xt], [7.28, 6.6], color=C_CHORD,
linewidth=1.3, linestyle='--', zorder=5)
# RV papillary muscles
for xo in [-0.3, 0.3]:
pm = Ellipse((9.0+xo, 6.5), 0.35, 0.22, facecolor='#7d3c98',
edgecolor='#5b2c6f', linewidth=1.2, zorder=5, alpha=0.8)
ax.add_patch(pm)
# Mitral chordae
for xo, xt in [(-0.35,-0.2),(0.1, 0.05),(0.4,0.25)]:
ax.plot([7.0+xo, 7.0+xt], [7.28, 6.6], color=C_CHORD,
linewidth=1.3, linestyle='--', zorder=5)
# LV papillary muscles
for xo in [-0.28, 0.25]:
pm2 = Ellipse((7.0+xo, 6.5), 0.35, 0.22, facecolor='#7d3c98',
edgecolor='#5b2c6f', linewidth=1.2, zorder=5, alpha=0.8)
ax.add_patch(pm2)
# ════════════════════════════════════════════════════════════════════
# CORONARY ARTERIES
# ════════════════════════════════════════════════════════════════════
# ── Left Main Coronary Artery (LMCA) origin ───────────────────────
lmca_x = [7.5, 7.2, 6.8, 6.5]
lmca_y = [11.35, 11.0, 10.7, 10.4]
ax.plot(lmca_x, lmca_y, color=C_LCA, linewidth=4,
solid_capstyle='round', zorder=8, label='LMCA')
# ── Left Anterior Descending (LAD) ────────────────────────────────
lad_x = [6.5, 6.3, 6.1, 5.95, 5.9, 5.95, 6.2, 6.8, 7.6, 8.0]
lad_y = [10.4, 10.0, 9.5, 9.0, 8.2, 7.5, 6.5, 5.0, 3.5, 2.5]
ax.plot(lad_x, lad_y, color=C_LCA, linewidth=3.5,
solid_capstyle='round', zorder=8, label='LAD')
# ── Diagonal Branch (from LAD) ────────────────────────────────────
diag_x = [6.1, 5.5, 4.9]
diag_y = [9.5, 8.8, 8.0]
ax.plot(diag_x, diag_y, color=C_LCA, linewidth=2,
linestyle='--', solid_capstyle='round', zorder=8)
# ── Left Circumflex (LCx) ─────────────────────────────────────────
lcx_x = [6.5, 6.0, 5.3, 4.8, 4.5, 4.5, 4.8, 5.2]
lcx_y = [10.4, 10.5, 10.3, 9.9, 9.3, 8.5, 7.8, 7.2]
ax.plot(lcx_x, lcx_y, color='#e74c3c', linewidth=3,
solid_capstyle='round', zorder=8, label='LCx')
# Obtuse marginal (LCx branch)
om_x = [4.5, 3.9, 3.4]
om_y = [9.0, 8.3, 7.6]
ax.plot(om_x, om_y, color='#e74c3c', linewidth=2,
linestyle='--', solid_capstyle='round', zorder=8)
# ── Right Coronary Artery (RCA) ───────────────────────────────────
rca_x = [8.0, 8.6, 9.4, 10.2, 10.8, 11.2, 11.2, 10.8, 10.2, 9.5, 8.8, 8.2, 8.0]
rca_y = [11.35, 11.0, 10.6, 10.0, 9.2, 8.3, 7.4, 6.5, 5.6, 4.8, 4.0, 3.2, 2.6]
ax.plot(rca_x, rca_y, color=C_RCA, linewidth=3.5,
solid_capstyle='round', zorder=8, label='RCA')
# ── Posterior Descending Artery (PDA, from RCA) ───────────────────
pda_x = [8.0, 8.0, 8.0]
pda_y = [2.6, 2.0, 1.5]
ax.plot(pda_x, pda_y, color=C_RCA, linewidth=2.5,
solid_capstyle='round', zorder=8, label='PDA')
# Acute marginal (RCA branch)
am_x = [11.2, 11.8, 12.2]
am_y = [7.8, 7.0, 6.1]
ax.plot(am_x, am_y, color=C_RCA, linewidth=2,
linestyle='--', solid_capstyle='round', zorder=8)
# ════════════════════════════════════════════════════════════════════
# ANNOTATIONS (labels with arrows)
# ════════════════════════════════════════════════════════════════════
# Great vessels
anno(ax, (7.75, 12.1), (5.5, 13.5), 'Ascending Aorta', fontsize=8.5, color='#d35400', arrowcolor='#d35400')
anno(ax, (6.47, 12.05),(4.0, 13.5), 'Pulmonary Trunk', fontsize=8.5, color='#1a7a42', arrowcolor='#1a7a42')
anno(ax, (9.2, 11.95), (11.5, 13.3), 'Superior Vena Cava (SVC)',fontsize=8.5, color='#2171b5', arrowcolor='#2171b5')
anno(ax, (9.2, 1.9), (11.5, 1.0), 'Inferior Vena Cava (IVC)',fontsize=8.5, color='#2171b5', arrowcolor='#2171b5')
anno(ax, (11.2, 9.65), (13.2, 9.8), 'R Pulmonary Veins', fontsize=8.5, color='#c0392b', arrowcolor='#c0392b')
anno(ax, (4.8, 9.65), (2.5, 9.8), 'L Pulmonary Veins', fontsize=8.5, color='#c0392b', arrowcolor='#c0392b')
# Valves
anno(ax, (9.0, 7.5), (12.0, 7.8), 'Tricuspid Valve (TV)\n3 leaflets',fontsize=8.5, color='#7d6608', arrowcolor='#b7950b')
anno(ax, (7.0, 7.5), (3.5, 7.0), 'Mitral Valve (MV)\n2 leaflets', fontsize=8.5, color='#7d6608', arrowcolor='#b7950b')
anno(ax, (7.75, 11.3), (5.5, 12.8), 'Aortic Valve (AV)\n3 semilunar cusps', fontsize=8.5, color='#935116', arrowcolor='#935116')
anno(ax, (6.47, 11.35),(3.8, 12.8), 'Pulmonary Valve (PV)\n3 semilunar cusps', fontsize=8.5, color='#0e8c70', arrowcolor='#0e8c70')
# Coronary arteries
anno(ax, (6.1, 9.2), (2.0, 10.2), 'LAD\n(Left Ant. Descending)', fontsize=8.5, color='#7b241c', arrowcolor=C_LCA)
anno(ax, (7.0, 11.2), (5.5, 13.0), 'LMCA\n(Left Main Coronary)', fontsize=8.5, color='#7b241c', arrowcolor=C_LCA)
anno(ax, (4.6, 8.8), (2.0, 8.2), 'LCx\n(Left Circumflex)', fontsize=8.5, color='#7b241c', arrowcolor='#e74c3c')
anno(ax, (11.0, 8.5), (13.5, 8.5), 'RCA\n(Right Coronary Art.)', fontsize=8.5, color='#784212', arrowcolor=C_RCA)
anno(ax, (8.0, 2.0), (10.5, 1.2), 'PDA\n(Post. Descending Art.)', fontsize=8.5, color='#784212', arrowcolor=C_RCA)
anno(ax, (5.6, 8.5), (2.5, 6.5), 'Diagonal Branch', fontsize=8.5, color='#7b241c', arrowcolor=C_LCA)
anno(ax, (3.9, 7.8), (2.0, 6.5), 'Obtuse Marginal (OM)', fontsize=8.5, color='#7b241c', arrowcolor='#e74c3c')
anno(ax, (11.8, 6.8), (13.8, 6.0), 'Acute Marginal (AM)', fontsize=8.5, color='#784212', arrowcolor=C_RCA)
# Septa
anno(ax, (8.0, 10.0), (12.5, 10.5), 'Interatrial Septum\n(Fossa Ovalis visible)', fontsize=8.5, color='#3e2723', arrowcolor=C_SEP)
anno(ax, (8.0, 5.0), (12.5, 4.5), 'Interventricular Septum', fontsize=8.5, color='#3e2723', arrowcolor=C_SEP)
# Chordae + papillary
anno(ax, (9.0, 6.6), (12.0, 5.8), 'Papillary Muscles &\nChordae Tendineae', fontsize=8.5, color='#4a235a', arrowcolor=C_CHORD)
# LV vs RV wall thickness
anno(ax, (5.2, 5.5), (2.0, 4.5), 'LV Wall\n(~10–12 mm thick)', fontsize=8.5, color='#7a1a1a', arrowcolor='#c0392b')
anno(ax, (10.9, 5.5), (13.5, 4.5), 'RV Wall\n(~3–5 mm thick)', fontsize=8.5, color='#1a3a5c', arrowcolor='#2171b5')
# ════════════════════════════════════════════════════════════════════
# BLOOD FLOW ARROWS (inside chambers)
# ════════════════════════════════════════════════════════════════════
arrow_kw = dict(arrowstyle='->', color='white', lw=1.5,
mutation_scale=12, zorder=9)
# RA → TV → RV
ax.annotate('', xy=(9.1, 7.6), xytext=(9.3, 9.0),
arrowprops=dict(**arrow_kw, color='#1a3a5c'))
# LA → MV → LV
ax.annotate('', xy=(7.0, 7.6), xytext=(6.8, 9.0),
arrowprops=dict(**arrow_kw, color='#7a1a1a'))
# RV → PA (up)
ax.annotate('', xy=(6.47, 11.1), xytext=(8.7, 9.5),
arrowprops=dict(arrowstyle='->', color='#1a7a42', lw=1.5,
mutation_scale=12, zorder=9,
connectionstyle='arc3,rad=-0.3'))
# LV → Aorta (up)
ax.annotate('', xy=(7.75, 11.1), xytext=(7.2, 9.5),
arrowprops=dict(arrowstyle='->', color='#d35400', lw=1.5,
mutation_scale=12, zorder=9,
connectionstyle='arc3,rad=0.3'))
# ════════════════════════════════════════════════════════════════════
# TITLE
# ════════════════════════════════════════════════════════════════════
ax.text(8.0, 13.7, 'Cross-Sectional View of the Human Heart',
ha='center', va='center', fontsize=16, fontweight='bold',
color='#1a1a2e', fontfamily='DejaVu Sans', zorder=20)
ax.text(8.0, 13.35, 'Anterior (coronal) view — Four chambers, valves, and coronary arteries',
ha='center', va='center', fontsize=9.5, color='#444',
fontfamily='DejaVu Sans', zorder=20, style='italic')
# ════════════════════════════════════════════════════════════════════
# LEGEND
# ════════════════════════════════════════════════════════════════════
legend_patches = [
mpatches.Patch(facecolor=C_LA, edgecolor='#c0392b', label='Oxygenated blood (left heart)'),
mpatches.Patch(facecolor=C_RA, edgecolor='#2171b5', label='Deoxygenated blood (right heart)'),
mpatches.Patch(facecolor=C_VALVE, edgecolor='#b7950b', label='AV valves (Tricuspid, Mitral)'),
mpatches.Patch(facecolor='#e8870a', edgecolor='#935116', label='Semilunar valves (Aortic, Pulmonary)'),
mpatches.Patch(facecolor=C_LCA, label='Left coronary system (LMCA, LAD, LCx)'),
mpatches.Patch(facecolor=C_RCA, label='Right coronary artery (RCA, PDA)'),
mpatches.Patch(facecolor=C_CHORD, label='Chordae tendineae / papillary muscles'),
mpatches.Patch(facecolor=C_SEP, label='Interatrial / interventricular septum'),
]
leg = ax.legend(handles=legend_patches, loc='lower center',
bbox_to_anchor=(0.5, -0.01), ncol=4,
fontsize=8, frameon=True,
facecolor='#fffde7', edgecolor='#e2c94e',
handlelength=1.4, handleheight=1.0)
leg.get_frame().set_linewidth(1.2)
# ════════════════════════════════════════════════════════════════════
# ATTRIBUTION
# ════════════════════════════════════════════════════════════════════
ax.text(8.0, -0.55, 'Orris Medical Illustration · Anatomically accurate schematic for educational use',
ha='center', va='center', fontsize=7.5, color='#888',
fontfamily='DejaVu Sans', style='italic', zorder=20)
plt.tight_layout(pad=0.5)
plt.savefig('/home/daytona/workspace/heart-anatomy/heart_cross_section.png',
dpi=150, bbox_inches='tight', facecolor=fig.get_facecolor())
print("Saved successfully.")
plt.close()
python3 /home/daytona/workspace/heart-anatomy/generate_heart.py 2>&1
~/heart-anatomy/generate_heart.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/heart-anatomy/generate_heart.py'
python3 /home/daytona/workspace/heart-anatomy/generate_heart.py 2>&1
ls -lh /home/daytona/workspace/heart-anatomy/
heart cross section
Image · PNG
heart cross section
Image · SVG
| Chamber | Position | Blood type | Wall thickness |
|---|---|---|---|
| Right Atrium (RA) | Upper right | Deoxygenated (blue) | Thin |
| Right Ventricle (RV) | Lower right | Deoxygenated | ~3–5 mm |
| Left Atrium (LA) | Upper left | Oxygenated (red) | Thin |
| Left Ventricle (LV) | Lower left | Oxygenated | ~10–12 mm |