Six enzymes (the glowing rings) sit fixed in the tank. Blue substrate spheres wander randomly; whenever one drifts close enough to a free active site, it can dock — with a chance per instant set by Km (a lower Km means tighter binding, so docking happens more readily at the same substrate concentration). Once bound, the enzyme holds the substrate for a catalytic step lasting 1/kcat seconds, then releases it as green product and becomes free again. Product recycles back into the substrate pool after drifting off, keeping [S] steady the way a real assay is buffered with excess substrate.
v = kcat·[ES] (steady state)
v = Vmax·[S] / (Km + [S]) — no inhibitor
v = Vmax·[S] / (Km(1+[I]/Ki) + [S]) — competitive
v = (Vmax/(1+[I]/Ki))·[S] / (Km + [S]) — noncompetitive
- Competitive inhibitor (orange) — races the substrate for the same active site. It blocks the pocket for a while without being converted, raising the apparent Km — more substrate is needed to reach the same rate, but enough substrate can still out-compete it.
- Noncompetitive inhibitor (red) — docks at a separate allosteric pocket on the back of the enzyme. It does not block substrate binding, but while attached it cripples the catalytic step, lowering the effective Vmax no matter how much substrate is present.
- Simulated vs predicted rate — the live counter tracks actual conversions per second in the 3D scene; the predicted value comes straight from the Michaelis-Menten equation above, so you can see the stochastic simulation trace the textbook curve.
Real-world relevance: this is the same logic behind drug design — a competitive inhibitor (many statins, some antivirals) can be "out-run" by raising substrate/enzyme ratio, while a noncompetitive/allosteric inhibitor caps the reaction no matter the substrate load, which is why allosteric drugs are prized for enzymes with naturally high substrate turnover.