From fd8d4aca7449671dcf50c44e4185dd0eac6f4309 Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Tue, 6 Jan 2015 18:59:15 +0330 Subject: [PATCH] initial commit, and probably the last --- index.html | 18 +++++++++++ main.js | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++ scr.png | Bin 0 -> 21843 bytes 3 files changed, 110 insertions(+) create mode 100644 index.html create mode 100644 main.js create mode 100644 scr.png diff --git a/index.html b/index.html new file mode 100644 index 0000000..1408df9 --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ + + + + Scatter + + + + + + + + + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..5a43fad --- /dev/null +++ b/main.js @@ -0,0 +1,92 @@ +var $c = document.getElementById('c'), + c = $c.getContext('2d'), + // RGBA colors + colors = [[224, 56, 56, 1], [252, 191, 22, 1], + [129, 219, 39, 1], [39, 162, 219, 1], + [219, 39, 159, 1]], + balls = []; + + +// To reduce calculations +const fourty = Math.PI/4; +const ninety = Math.PI/2; + +// Degrees, used to move circles in their direction +// 45, 135, 225, 315 +var degrees = [fourty, fourty*3, Math.PI+fourty, Math.PI+fourty*3]; + +function add(x, y) { + var index = Math.floor(Math.random()*colors.length); + var radius = Math.random()*10; + balls.push({ + color: colors[index].slice(0), + x: Math.random() < 0.5 ? x+Math.random() : x-Math.random(), + y: Math.random() < 0.5 ? y+Math.random() : y-Math.random(), + r: radius, + deg: degrees[Math.floor(Math.random()*degrees.length)] + }); +} + +(function loop() { + mozRequestAnimationFrame(function() { + c.clearRect(0, 0, $c.width, $c.height); + + for( var i = 0; i < balls.length; i++ ) { + var ball = balls[i]; + + // If ball has faded away completly, remove it + if(ball.color[3] < 0.01) { + balls = balls.slice(0, i).concat(balls.slice(i+1, balls.length)); + i--; + continue; + } + ball.color[3] -= 0.01; + + var dx = ball.x + Math.random()*5*Math.sin(ball.deg); + var dy = ball.y + Math.random()*5*Math.cos(ball.deg); + ball.x = dx; + ball.y = dy; + ball.r = ball.r + 1; + + c.beginPath(); + c.fillStyle = 'rgba(' + ball.color.join(',') + ')'; + c.arc(dx, dy, ball.r, 0, 2*Math.PI); + c.fill(); + } + loop(); + }) +})(); + + +var isMouseDown = false, + interval = null, + mouse = {}; + +$c.addEventListener('mousedown', function(e) { + isMouseDown = true; + mouse = {x: e.pageX, y: e.pageY}; + interval = setInterval(function() { + if(isMouseDown) { + add(mouse.x, mouse.y); + } + }, 100) +}) +$c.addEventListener('mouseup', function() { + isMouseDown = false; + clearInterval(interval); +}) +$c.addEventListener('mousemove', function(e) { + if(isMouseDown) { + add(e.pageX, e.pageY) + } + mouse = {x: e.pageX, y: e.pageY}; +}) + + +window.onresize = function() { + $c.setAttribute('width', window.innerWidth); + $c.setAttribute('height', window.innerHeight); +} + +window.onresize(); + diff --git a/scr.png b/scr.png new file mode 100644 index 0000000000000000000000000000000000000000..add25090190d4f735666f67b418104b0baf7d5ac GIT binary patch literal 21843 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 vfd0Y%bN-9|asFff