© 1996 Christian Cohnen
The Waschmaschine (washing machine) is an unfinished Java applet from 1996 that was never completed. It implements a vortex/whirlpool texture distortion effect — unlike a standard RotoZoomer where every pixel rotates by the same angle, the Waschmaschine varies the rotation based on distance from the screen center, so pixels further from the center twist more, creating a spiral distortion.
The original applet used Java’s indexed-color MemoryImageSource with a
256-color palette. This JavaScript port has been transpiled to use the HTML5 Canvas API
with true color rendering (24-bit RGB), producing much smoother gradients and
richer color transitions than the original ever could.
The effect pre-computes polar coordinate tables (radius and angle for every pixel) and a sin/cos lookup table at startup. The render loop then only needs table lookups and integer math — no trigonometry per pixel.
Originally an unfinished Java applet (1996), transpiled to JavaScript/Canvas in 2026.
The Java applet was never completed or published. The embed code would have been:
<applet archive="Waschmaschine.jar"
code="Waschmaschine.class" width="320" height="200">
</applet>
The JavaScript port uses pre-computed polar coordinate tables and a sin/cos lookup table to achieve the vortex distortion without any trigonometry in the render loop.
<canvas id="game" width="320" height="200"></canvas>
<script src="waschmaschine.js"></script>
Set CFG before loading the script to override defaults:
<script>
var CFG = {
twistStrength: 6, // max twist in PI radians
twistSpeed: 0.015, // oscillation speed
scrollSpeed: 0.5, // texture scroll speed
radiusColor: 1.5, // color ring density
colorSpeed: 1, // color cycling speed
zoomBreath: 0.3, // texture zoom amplitude
imageZoom: 0.15, // canvas zoom amplitude
palette: "blue" // blue | fire | ocean | gold
};
</script>
<script src="waschmaschine.js"></script>