← Gallery № 05 · canvas-2d

Pendulum Wave

Physics-based pendulum wave creating emergent interference patterns.

Canvas 2D

What is Pendulum Wave?

Pendulum Wave is a free Canvas 2D web effect in the TappyPrism library. Physics-based pendulum wave creating emergent interference patterns. It is drawn with the Canvas 2D API, which trades some GPU efficiency for the widest possible browser and device support. It ships as a single self-contained HTML file (pendulum-wave.html) with zero dependencies — no npm package, no framework, no build step. It exposes 2 live parameters — Pendulum Count, Cycle Duration — adjustable in the browser or at runtime.

Parameters

ParameterKeyRangeDefault
Pendulum CountNUM_PENDULUMS6 – 4020
Cycle DurationCYCLE_DURATION20 – 12060

How to add Pendulum Wave to your page

  1. Download the standalone file pendulum-wave.html and copy its source into your project.
  2. Or embed it as a background iframe:
    <iframe src="https://prism.tappypotato.com/fx/pendulum-wave.html" style="position:fixed;inset:0;width:100%;height:100%;border:0;z-index:-1" title="Pendulum Wave"></iframe>
  3. Tune it at runtime with postMessage:
    iframe.contentWindow.postMessage({ type: 'param', name: 'NUM_PENDULUMS', value: 20 }, '*');

Frequently asked questions

What is Pendulum Wave?

Pendulum Wave is a free Canvas 2D web effect in the TappyPrism library. Physics-based pendulum wave creating emergent interference patterns. It is drawn with the Canvas 2D API, which trades some GPU efficiency for the widest possible browser and device support. It ships as a single self-contained HTML file (pendulum-wave.html) with zero dependencies — no npm package, no framework, no build step. It exposes 2 live parameters — Pendulum Count, Cycle Duration — adjustable in the browser or at runtime.

How do I add Pendulum Wave to my website?

Download the standalone file at https://prism.tappypotato.com/fx/pendulum-wave.html and copy its source into your page, or embed it as a background iframe: <iframe src="https://prism.tappypotato.com/fx/pendulum-wave.html" style="position:fixed;inset:0;width:100%;height:100%;border:0;z-index:-1" title="Pendulum Wave"></iframe>. Tune it live with postMessage, e.g. iframe.contentWindow.postMessage({ type: 'param', name: 'NUM_PENDULUMS', value: 20 }, '*').