/*
---Tu Gesto Mi Gesto---
11/07/2016
tec / p5js
por Andres Senn
-----------------------
¿Hoy una obra puede hablar por su artista?,
¿o ya es el artista que habla por ella?,
no se, aveces siento que la relegamos
hasta el punto en que no aparece en escena...
*/
//¿Dónde está la obra?,
var g = 0;
var tl = 0;
var a = 0;
var t = 0;
var r1 = 400;
var r2 = 400;
var puntos = new Array(3000);
var res1, res2;
var inc1, inc2;
var transx, transl;
var init = false;
var capture;
var time = 0;
var imgsb = [];
var imageshow = false;
var mouse;
//var moves = [];
var G1;
var index_g = 0;
var _tint;
var canvas;
// ¿en la construcción del algoritmo?,
function setup() {
autoinit();
canvas = createCanvas(1024, 768);
canvas.parent('gesto');
colorMode(HSB, 255, 255, 255, 255);
r1 = random(50, 400);
r2 = random(50, 400);
res1 = r1 / puntos.length;
res2 = r2 / puntos.length;
transx = width / 2;
transl = random(-50, 50);
mouse = createVector(0, 0);
background(0);
_tint = 0;
inc1 = random(0.001, 0.01);
inc2 = random(0.001, 0.01);
for (var i = 0; i < puntos.length; i++) {
puntos[i] = new P3d();
puntos[i].x = (width / 2) + r1 * cos(a);
puntos[i].y = (height / 2) + r2 * sin(a);
r1 -= res1;
r2 -= res2;
// ¿en el resultado final, que no es final?
a += inc1;
t += inc2;
}
}
function draw() {
// ¿en la performance de la acción del algoritmo?,
if (capture == null) {
if (init) {
push();
translate(transx, height / 2);
rotate(g);
translate(-transx, -height / 2);
transx += transl * sin(tl);
g += 0.1;
tl += 0.2;
stroke(255, 20);
strokeWeight(0.4);
// no se...
for (var i = 0; i < puntos.length; i++) {
point(puntos[i].x + 500 * noise(i * 0.005), puntos[i].y + 100 * noise(i * 0.005));
puntos[i].r1 = puntos[i].r1 + 20 * noise(i * 0.5);
puntos[i].r2 = puntos[i].r1 + 20 * noise(i * 0.5);
}
pop();
}
// Si está en el algoritmo, déjenme ponerlo lindo, no se puede presentar así!
} else {
var rfc = int(random(50, 80));
if (mouseIsPressed) {
mouse.set(mouseX, mouseY);
} else {
mouse.set(G1[index_g][0], G1[index_g][1]);
}
var bsx = int(random(5, 100));
var bsy = int(random(5, 400));
for (var i = 0; i < imgsb.length; i++) {
var ib = imgsb[i];
var di = dist(mouse.x, mouse.y, ib.x, ib.y);
if (ib.x > mouse.x && ib.y > mouse.y && ib.x < mouse.x + bsx && ib.y < mouse.y + bsy) {
ib.x += int(random(-20, 4));
ib.y += int(random(-4, 4));
stroke(255, 40 * noise(ib.x * 0.01, ib.y * 0.01));
strokeWeight(0.5);
line(ib.x, ib.y, ib.x + (400 * noise(ib.x * 0.01, ib.y * 0.01)), ib.y);
stroke(0, 200 * noise(ib.x * 0.01, ib.y * 0.01));
line(ib.x, ib.y, ib.x - (100 * noise(ib.x * 0.01, ib.y * 0.01)), ib.y);
line(ib.x, ib.y, ib.x, ib.y + (300 * noise(ib.x * 0.01, ib.y * 0.02)));
if (frameCount % rfc > rfc * 0.9) {
noStroke();
tint(_tint, 255, 255, 100);
}
// Si está en el resultado de la imagen, quedo en deuda con el código, que es igual de bello.
image(ib.img, ib.x, ib.y);
stroke(0, 220);
noFill();
rect(ib.x, ib.y, ib.img.width, ib.img.height);
noTint();
}
}
index_g++;
if (index_g >= G1.length) index_g = 0;
}
if (imageshow == true) {
image(capture, 0, 0);
imageshow = false;
fill(255, 10);
textSize(16);
textAlign(CENTER, CENTER);
text(floor(time / 1000) + " seg - Date: " + day() + "-" + month() + "-" + year() + " / " + hour() + ":" + minute() + ":" + second(), width / 2, height - 30);
}
// Si está en ese mundo efímero creado entre la mirada sensible y la performance del algoritmo, ¿dónde quedo yo?, ¿o él?.
}
function P3d() {
this.x = 0;
this.y = 0;
this.z = 0;
this.r1 = 0;
this.r2 = 0;
}
function autoinit() {
init = true;
r1 = random(50, 400);
r2 = random(50, 400);
res1 = r1 / puntos.length;
res2 = r2 / puntos.length;
transx = width / 2;
transl = random(-30, 30);
mouse = createVector(0, 0);
inc1 = random(0.001, 0.01);
inc2 = random(0.001, 0.01);
a = 0;
t = 0;
g = 0;
for (var i = 0; i < puntos.length; i++) {
puntos[i] = new P3d();
puntos[i].x = (width / 2) + r1 * cos(a);
puntos[i].y = (height / 2) + r2 * sin(a);
r1 -= res1;
r2 -= res2;
a += inc1;
t += inc2;
}
function ImgBlock(_img, _x, _y) {
this.x = _x;
this.y = _y;
this.img = _img;
}
// Por las dudas dejo mi gesto;
// por ahí me reconocen,
// dejo lugar también para que alguien más pueda ser parte,
// dejame tu gesto.
// Gesto 07/07/2016 - 1:35 AM
G1 = [
[447, 406],
[447, 406],
[447, 405],
[448, 404],
[448, 403],
[448, 403],
[448, 402],
[450, 400],
[450, 400],
[450, 400],
[450, 400],
[450, 400],
[450, 400],
[450, 400],
[450, 400],
[450, 400],
[447, 400],
[444, 400],
[437, 400],
[433, 400],
[429, 400],
[421, 403],
[418, 403],
[413, 405],
[410, 405],
[405, 406],
[400, 407],
[395, 408],
[390, 410],
[378, 412],
[374, 414],
[373, 414],
[371, 415],
[368, 417],
[364, 418],
[360, 419],
[358, 419],
[356, 420],
[353, 421],
[344, 424],
[344, 424],
[344, 424],
[376, 417],
[379, 417],
[383, 416],
[388, 416],
[395, 413],
[400, 412],
[402, 411],
[406, 410],
[413, 410],
[420, 410],
[428, 410],
[435, 409],
[440, 408],
[448, 408],
[449, 408],
[454, 408],
[457, 408],
[459, 408],
[461, 408],
[462, 408],
[462, 408],
[462, 408],
[462, 408],
[462, 408],
[464, 408],
[467, 408],
[467, 409],
[468, 409],
[469, 409],
[469, 409],
[468, 409],
[455, 400],
[449, 396],
[446, 393],
[446, 387],
[446, 382],
[447, 379],
[447, 376],
[450, 369],
[450, 367],
[450, 366],
[450, 365],
[451, 364],
[452, 362],
[452, 360],
[453, 359],
[454, 357],
[454, 356],
[455, 354],
[455, 353],
[455, 351],
[455, 335],
[455, 332],
[455, 325],
[455, 321],
[455, 316],
[456, 313],
[457, 309],
[461, 289],
[463, 285],
[506, 188],
[518, 202],
[519, 212],
[520, 220],
[523, 227],
[525, 239],
[529, 254],
[531, 260],
[612, 394],
[621, 402],
[651, 464],
[652, 471],
[652, 476],
[652, 478],
[650, 483],
[646, 494],
[646, 495],
[644, 496],
[644, 496],
[644, 496],
[644, 496],
[644, 496],
[644, 496],
[663, 477],
[665, 475],
[666, 473],
[668, 467],
[670, 462],
[674, 456],
[679, 448],
[687, 437],
[690, 431],
[692, 425],
[694, 420],
[694, 412],
[694, 405],
[695, 389],
[697, 378],
[714, 196],
[709, 183],
[708, 179],
[706, 173],
[695, 150],
[690, 144],
[654, 89],
[654, 89],
[654, 89],
[654, 89],
[654, 89],
[654, 89],
[654, 89],
[654, 89],
[654, 89],
[654, 89],
[615, 239],
[609, 263],
[609, 269],
[605, 292],
[605, 292],
[605, 292],
[605, 292],
[520, 341],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[390, 368],
[391, 368],
[392, 368],
[394, 368],
[396, 368],
[397, 368],
[398, 368],
[400, 369],
[403, 371],
[411, 373],
[416, 374],
[419, 376],
[420, 377],
[422, 379],
[424, 380],
[425, 381],
[426, 383],
[428, 384],
[429, 386],
[430, 389],
[432, 391],
[432, 392],
[433, 393],
[434, 395],
[435, 396],
[436, 397],
[436, 398],
[437, 400],
[438, 401],
[439, 402],
[440, 404],
[442, 405],
[443, 406],
[446, 408],
[447, 409],
[453, 414],
[454, 415],
[456, 417],
[460, 418],
[461, 420],
[466, 422],
[470, 424],
[475, 425],
[479, 427],
[484, 428],
[487, 430],
[493, 433],
[501, 437],
[506, 440],
[511, 443],
[516, 448],
[529, 457],
[535, 461],
[540, 464],
[544, 466],
[550, 468],
[553, 470],
[555, 471],
[558, 472],
[562, 474],
[568, 476],
[601, 482],
[601, 482],
[601, 482],
[601, 482],
[601, 482],
[598, 478],
[592, 473],
[584, 467],
[573, 459],
[572, 459],
[570, 458],
[564, 457],
[558, 457],
[551, 457],
[545, 457],
[456, 462],
[445, 463],
[411, 464],
[405, 465],
[393, 466],
[371, 466],
[350, 466],
[344, 467],
[336, 468],
[329, 470],
[318, 473],
[168, 464],
[164, 465],
[162, 465],
[162, 465],
[162, 465],
[162, 465],
[158, 466],
[158, 466],
[158, 466],
[158, 466],
[158, 466],
[154, 467],
[137, 470],
[129, 471],
[124, 472],
[121, 472],
[120, 472],
[104, 473],
[102, 473],
[102, 473],
[102, 473],
[102, 473],
[102, 473],
[101, 473],
[95, 461],
[94, 452],
[99, 403],
[93, 359],
[89, 337],
[89, 329],
[91, 324],
[95, 308],
[96, 304],
[101, 337],
[113, 413],
[114, 419],
[118, 425],
[120, 431],
[121, 433],
[123, 435],
[125, 440],
[145, 453],
[155, 458],
[163, 461],
[171, 463],
[185, 464],
[214, 466],
[244, 467],
[276, 469],
[305, 472],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[427, 451],
[404, 460],
[384, 467],
[367, 472],
[356, 475],
[356, 475],
[360, 475],
[448, 474],
[448, 474],
[442, 475],
[428, 476],
[410, 478],
[400, 480],
[397, 481],
[407, 480],
[422, 478],
[441, 477],
[462, 475],
[478, 473],
[479, 473],
[479, 473],
[462, 474],
[452, 474],
[449, 474],
[449, 474],
[450, 474],
[467, 474],
[510, 471],
[541, 468],
[530, 473],
[506, 475],
[485, 477],
[478, 478],
[479, 478],
[492, 477],
[512, 475],
[533, 472],
[551, 469],
[559, 468],
[560, 468],
[558, 468],
[545, 470],
[528, 474],
[484, 477],
[483, 477],
[485, 477],
[504, 475],
[527, 473],
[560, 469],
[571, 468],
[572, 467],
[570, 467],
[543, 471],
[518, 475],
[494, 479],
[475, 481],
[472, 481],
[482, 481],
[510, 476],
[540, 474],
[567, 470],
[586, 467],
[590, 467],
[586, 467],
[568, 469],
[544, 473],
[522, 477],
[492, 480],
[489, 481],
[491, 481],
[515, 478],
[550, 475],
[595, 470],
[636, 465],
[641, 464],
[641, 464],
[603, 468],
[561, 471],
[539, 471],
[530, 471],
[531, 467],
[548, 455],
[590, 433],
[614, 415],
[627, 398],
[632, 386],
[632, 378],
[628, 365],
[626, 358],
[624, 349],
[584, 256],
[581, 250],
[578, 245],
[554, 31],
[555, 29],
[555, 29],
[555, 29],
[555, 29],
[568, 15],
[571, 12],
[577, 10],
[580, 10],
[582, 10],
[583, 9],
[583, 9],
[505, 41],
[470, 56],
[448, 75],
[447, 81],
[444, 91],
[442, 106],
[442, 120],
[589, 289],
[589, 289],
[589, 289],
[589, 289],
[589, 289]
];