pixel(s0
var Universe = function Pixels() {
return {
framecount : 0,
update: function () {
impulsX = impulsX + (impulsToX - impulsX) / 30;
impulsY = impulsY + (impulsToY - impulsY) / 30;
// move to tox
for(i = 0; i<pixels.length; i++ ) {
pixels[i].x = pixels[i].x + (pixels[i].toX - pixels[i].x) / 10;
pixels[i].y = pixels[i].y + (pixels[i].toY - pixels[i].y) / 10;
pixels[i].size = pixels[i].size + (pixels[i].toSize - pixels[i].size) / 10;
pixels[i].r = pixels[i].r + (pixels[i].toR - pixels[i].r) / 10;
pixels[i].g = pixels[i].g + (pixels[i].toG - pixels[i].g) / 10;
pixels[i].b = pixels[i].b + (pixels[i].toB - pixels[i].b) / 10;
}
// update speed
for(i = 0; i<pixels.length; i++ ) {
// check for flightmode
var a = Math.abs(pixels[i].toX - mx) * Math.abs(pixels[i].toX - mx);
var b = Math.abs(pixels[i].toY - my) * Math.abs(pixels[i].toY - my);
var c = Math.sqrt(a+b);
if(pixels[i].flightMode != 2) {
if(c < 120) {
if(pixels[i].flightMode == 0) {
var alpha = Math.atan2(pixels[i].y - my, pixels[i].x - mx) * 180 / Math.PI + Math.random()*180-90;
pixels[i].degree = alpha;
pixels[i].degreeSpeed = Math.random()*1+0.5;
pixels[i].frame = 0;
}
pixels[i].flightMode = 1;
} else {
pixels[i].flightMode = 0;
}
}
// random movement
if(pixels[i].flightMode == 0) {
// change position
pixels[i].toX += pixels[i].speedX;
pixels[i].toY += pixels[i].speedY;
// check for bounds
if(pixels[i].x < 0) {
pixels[i].x = width;
pixels[i].toX = width;
}
if(pixels[i].x > width) {
pixels[i].x = 0;
pixels[i].toX = 0;
}
if(pixels[i].y < 0) {
pixels[i].y = height;
pixels[i].toY = height;
}
if(pixels[i].y > height) {
pixels[i].y = 0;
pixels[i].toY = 0;
}
}
// seek mouse
if(pixels[i].flightMode == 1) {
pixels[i].toX = mx + Math.cos((pixels[i].degree + pixels[i].frame ) % 360 * Math.PI /180)*c;
pixels[i].toY = my + Math.sin((pixels[i].degree + pixels[i].frame ) % 360 * Math.PI /180)*c;
pixels[i].frame += pixels[i].degreeSpeed;
pixels[i].degreeSpeed += 0.01;
}
if(pixels[i].flightMode != 2) {
// add impuls
pixels[i].toX += Math.floor(impulsX * pixels[i].size/30);
pixels[i].toY += Math.floor(impulsY * pixels[i].size/30);
}
}
// set an choord
var r1 = Math.floor(Math.random() * pixels.length);
var r2 = Math.floor(Math.random() * pixels.length);
if(pixels[r1].flightMode != 2) pixels[r1].size = Math.random()*30;
if(pixels[r2].flightMode != 2) pixels[r2].size = Math.random()*30;
this.framecount++;
now = new Date();
if(now.getTime() - startedAt.getTime() >= machine[machineIndex]) {
machineIndex++;
impulsX = Math.random()*800-400;
impulsY = -Math.random()*400;
var transIndex = Math.floor(Math.random()*transitions.length);
transitions[transIndex]();
}
},
draw: function () {
// p.stroke(255, 0, 0);
// p.ellipse(p.mouseX+5, p.mouseY+5, 5, 5);
for(i = 0; i<pixels.length; i++ ) {
p.fill(Math.floor(pixels[i].r), Math.floor(pixels[i].g), Math.floor(pixels[i].b));
p.ellipse(pixels[i].x, pixels[i].y, pixels[i].size, pixels[i].size);
// console.log(pixels[i].x);
}
if(focusedParticleIndex != null) {
p.fill(Math.floor(pixels[focusedParticleIndex].r), Math.floor(pixels[focusedParticleIndex].g), Math.floor(pixels[focusedParticleIndex].b));
p.ellipse(pixels[focusedParticleIndex].x, pixels[focusedParticleIndex].y, pixels[focusedParticleIndex].size, pixels[focusedParticleIndex].size);
}
}
}
};