<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title> Forever loop </title>
<style>
#c { border: 1px solid black; }
</style>
</head>
<body>
<canvas id='c' width=1024 height=768></canvas>
<script>
var lines = [];
function drawline(ctx, x1, y1, x2, y2, color, width) {
ctx.lineWidth = width;
ctx.strokeStyle = color;
ctx.save();
ctx.beginPath();
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
ctx.moveTo(x1, y1);
ctx.closePath();
ctx.stroke();
}
function R(a, b) {
var range = Math.abs(a-b);
var m = Math.min(a,b);
return Math.floor(m + (Math.random() * range));
}
var x1 = R(0,1023), x2=R(0,1023), y1 = R(0,767), y2 = R(0,767)
var dx1=R(1,20), dx2=R(1,20), dy1=R(1,20), dy2=R(1,20);
function update() {
var ctx = document.getElementById("c").getContext("2d");
// ctx.clearRect(0,0,1024,768);
var color = "rgb(" + R(0,255) + "," + R(0,255) + "," + R(0,255) + ")";
drawline(ctx, x1, y1, x2, y2, color, 3);
lines.push({x1: x1,y1: y1, x2: x2, y2: y2});
x1 += dx1;
if (x1 < 0 || x1 >= 1024) dx1 = -dx1;
x2 += dx2;
if (x2 < 0 || x2 >= 1024) dx2 = -dx2;
y1 += dy1;
if (y1 < 0 || y1 >= 768) dy1 = -dy1;
y2 += dy2;
if (y2 < 0 || y2 >= 768) dy2 = -dy2;
if (lines.length > 100) {
var l = lines.shift();
drawline(ctx, l.x1, l.y1, l.x2, l.y2, "white", 5);
}
setTimeout(update, 33);
}
setTimeout(update, 33);
</script>
</body>
</html>