Home▸Physics & Mechanics▸Heart Beating Blood Flow (2D)

Heart Beating Blood Flow (2D)

2D companion to the 3D beating heart: a real time-varying-elastance ventricle with valve-gated filling/ejection drives a Wiggers-style pressure & volume plot and the actual blood flow through a Windkessel-model circulation.

Physics & Mechanics2DModerate60 FPS📱 Mobile-adapted⇄ 3D version
2d-heart-beating-blood-flow ↗ Open standalone

This 2D companion drives the same real cardiovascular physiology as the 3D original's beating heart, but reads it out as physiology rather than decoration: a time-varying elastance ventricle — P(t) = E(t)·(V−V0), with E(t) following the standard double-Hill systolic/diastolic shape — fills through a diode-like mitral valve whenever venous pressure exceeds ventricular pressure and ejects through an aortic valve whenever ventricular pressure exceeds aortic pressure, charging a two-element Windkessel arterial model that produces a realistic pressure upstroke and diastolic runoff. The top panel is a live Wiggers-style plot of ventricular pressure, aortic pressure and ventricular volume over the cardiac cycle; the bottom panel shows the beating chamber and the flow it actually drives through the vessel loop, with particle speed set by the computed aortic flow rather than a scripted pulse. Heart rate, contractility, preload, afterload and arterial compliance are all independently adjustable and each measurably reshapes stroke volume, cardiac output, mean arterial pressure and pulse pressure — the same five physiological levers a cardiologist reasons about at the bedside.

⚙ Under the hood

2D cardiac-cycle lab with a time-varying-elastance ventricle, valve-gated filling and ejection, and a Windkessel arterial model, plotted as a Wiggers diagram and driving real particle flow through the vessel loop.

cardiac cycletime-varying elastancewiggers diagramwindkessel modelhemodynamicscirculation

2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)