var pts = poligono(width/2,height/2,12,20,20,13);
coral = new Coral().iniciar(pts);
campos[0] = new Campo().iniciar();
rect(1,1,width-2,height-2);
coral.actualizar(FuncionDifTiempo,FuncionSeparacionExt,FuncionSeparacionInt,FuncionParticion,Elasticidad,Friccion,Suavizado,FuncionPolaridad);
ellipse(mouseX,mouseY,mouseDiam,mouseDiam);
text("fps: " + frameRate().toFixed(2),10,height-10);
function FuncionDifTiempo(v){
var d = v.pos.dist(createVector(mouseX,mouseY));
return 0.001 + 0.9*exp(-6*t*t/mouseDiam*mouseDiam);
var c = campos[0].valorEn(v.pos.x,v.pos.y);
return map(c,-1,1,1,0.05);
function FuncionSeparacionExt(v){
var d = v.pos.dist(createVector(mouseX,mouseY));
return 20 + t*50*exp(-6*t*t/mouseDiam*mouseDiam);
var c = campos[0].valorEn(v.pos.x,v.pos.y);
return map(c,1,-1,10,40);
function FuncionSeparacionInt(v){
var d = v.pos.dist(createVector(mouseX,mouseY));
return 20 + t*50*exp(-6*t*t/mouseDiam*mouseDiam);
var c = campos[0].valorEn(v.pos.x,v.pos.y);
return map(c,1,-1,10,40);
function FuncionParticion(v){
var d = v.pos.dist(createVector(mouseX,mouseY));
return 30 - 15*exp(-6*t*t/mouseDiam*mouseDiam);
var c = campos[0].valorEn(v.pos.x,v.pos.y);
return map(c,-1,1,15,30);
function FuncionPolaridad(v){
var d = v.pos.dist(createVector(mouseX,mouseY));
var f = (mouseButton == LEFT) ? 1 : -1;
return f*30 * t * exp(-6*t*t/mouseDiam*mouseDiam);