Abstractos programables
Códigos Javascript para generar aleatoriamente imagenes abstractas con volúmen.
var canvas = document.getElementById("canvas03");
var context3 = canvas.getContext("2d");
var W = canvas.width, H = canvas.height;
var particles = [];
for(var i = 0; i < 20; i++)
{
particles.push(new particle());
}
function particle()
{
context3.globalCompositeOperation = "destination-over";
this.location = {x: Math.random()*W, y: Math.random()*H};
this.radius = 25*Math.random();
this.speed = 25*Math.cos(Math.random()*100);
this.angle = Math.random()*360;
var r = Math.round(Math.random()*255);
var g = Math.round(Math.random()*255);
var b = Math.round(Math.random()*255);
var a = Math.random();
this.rgba = "rgba("+r+", "+g+", "+b+", "+a+")";
}
function draw()
{
context3.globalCompositeOperation = "destination-over";
context3.fillStyle = "rgba(0, 0, 0, 0.01)";
context3.fillRect(0, 0, W, H);
for(var i = 0; i < particles.length; i++)
{
var p = particles[i];
context3.globalAlpha = 0.01;
context3.fillStyle = "black";
context3.fillRect(p.location.x, p.location.y, p.radius, p.radius);
for(var n = 0; n < particles.length; n++)
{
var p2 = particles[n];
var yd = p2.location.y - p.location.y;
var xd = p2.location.x - p.location.x;
var distance = Math.sqrt(xd + yd);
if(distance <= 50)
{
context3.beginPath();
context3.lineWidth = 200*Math.random();
context3.moveTo(p.location.x, p.location.y);
context3.lineTo(p2.location.x, p2.location.y);
context3.strokeStyle = p.rgba;
context3.stroke();
}
else
{
if(distance <= 100)
{
context3.beginPath();
context3.lineWidth = 500*Math.random();
context3.moveTo(p.location.x, p.location.y);
context3.quadraticCurveTo(p.location.x, p.location.y, p2.location.x, p2.location.y);
context3.strokeStyle = "black";
context3.stroke();
}
}
}
p.location.x = p.location.x + p.speed*Math.sin(p.angle*Math.PI/360);
p.location.y = p.location.y + p.speed*Math.cos(p.angle*Math.PI/360);
if(p.location.x < 0) p.location.x = W;
if(p.location.x > W) p.location.x = H*Math.random();
if(p.location.y < 0) p.location.y = H;
if(p.location.y > H) p.location.y = W*Math.random();
}
}
setInterval(draw, 1);
All rights reserved