tecla i = comienza / teclas g,e,s,t,o = fragmenta
Algoritmo "Tu Gesto / Mi Gesto"

/*
---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]
];