Fusión de Flujo (Mi regalo de Reyes Magos para todos Vosotros) (2/3)

 



CÓDIGO

//(C)Sergio Salazar Latorre

// FDF - Fusion de Flujo 


let l = 600

let np = 100

let c = Array(np)

let s = Array(np)



function setup() {

  createCanvas(l,l);

  for(let i=0; i<np; i++){

    c[i] = new FDF(random(0,l),

                  random(0,l),

                  1)

    s[i] = new FDF(random(0,l),

                  random(0,l),

                  2)

  }

}


function draw() {

  background(0);

  noFill()

  stroke(255)

  

  for(let i=0; i<np; i++){

    c[i].dibuja()

    s[i].dibuja()

  }

  

  firma()

}


class FDF

{

  constructor(x,y,cc){

    this.x=x

    this.y=y

    this.cc=cc

    this.D=random(10,80)

    this.r=this.D/2

    this.naD=this.D*5/8

    this.na2D=this.D*3/8

    this.nar=this.r*5/8

    this.na2r=this.r*3/8

    this.cD=1

  }

  

  dibuja(){

    //cc=1 circulo

    //cc=2 cuadrado


      if(this.cc==1){

        this.dibujaCirculo()

      } else if(this.cc==2){

        this.dibujaCuadrado()

      }

    }

  dibujaCirculo(){

      this.prepararMovimiento(1)

      circle(this.x, this.y, this.D*this.cD)

    }

    

    dibujaCuadrado(){

      this.prepararMovimiento(2)

      square(this.x, this.y, this.D)

  }

  

  prepararMovimiento(cm){

    //cm=1 utilizar funcion sin() para variar el diametro

    //cm=2 caer y continuar por arriba

    

    if(cm==1){

      this.mDiametro()

    } else if(cm==2){

      this.mCaer()

    }

  }

  

  mDiametro(){

    let frecuencia=0.02

    this.cD = sin(frameCount*frecuencia+1*

                 dist(this.x, this.y, l/2, l/2))

  }

  

  mCaer(){

    this.y++

    if (this.y>l){

      this.y=0

    }

    

  }

}



function firma(){

  push()

  fill(255,0,0)

  strokeWeight(3)

  stroke(255)

  text("FDF - Fusión de Flujo - 002 - Creacion de Movimiento", 10, l-9*2)

  text("(C)Sergio Salazar Latorre", 10, l-5)

  pop()

}


Comentarios