<script type="text/javascript">
var ctx;
var tid = null;
function body_Load() {
var canvas = document.getElementById('plasma');
if (canvas.getContext) {
ctx = canvas.getContext('2d');
traceDiv = document.getElementById('trace');
}
else {
alert("Couldn't get the canvas, sorry :(");
}
}
function startButton_Click() {
if (tid != null)
clearInterval(tid);
tid = setInterval("drawFrame()", 50);
}
function stepButton_Click() {
drawFrame();
}
function stopButton_Click() {
clearInterval(tid);
}
function dist(a, b, c, d) {
return Math.sqrt((a - c) * (a - c) + (b - d) * (b - d));
}
var frameNumber = 0;
function drawFrame(single) {
var f = 0;
var r = 0;
var g = 0;
var b = 0;
for (var x = 0; x < 320; x++) {
for (var y = 0; y < 240; y++) {
f = Math.cos(dist(x + frameNumber, y, 128.0, 128.0) / 8.0)
+ Math.sin(dist(x, y, 64.0, 64.0) / 8.0)
+ Math.sin(dist(x, y + frameNumber / 7, 192.0, 64) / 7.0)
+ Math.cos(dist(x, y, 192.0, 100.0) / 8.0);
f = Math.round(f * 65536);
r = (f & 16711680) / 65536;
g = (f & 65280) / 256;
b = (f & 255);
ctx.fillStyle = 'rgb(' + r + ',' + g + ',' + b + ')';
ctx.fillRect(x,y,1,1);
}
}
frameNumber++;
}
<style type="text/css">canvas{border:1px solid black;}
</style>
<body onload="body_Load();">
<canvas id="plasma" width="320" height="240"></canvas>
<input type="button" name="start" id="startButton" value="Start" onclick="startButton_Click()"/>
<input type="button" name="step" id="stepButton" value="Step" onclick="stepButton_Click()"/>
<input type="button" name="stop" id="stopButton" value="Stop" onclick="stopButton_Click()"/>