Fusión de Flujo (Mi regalo de Reyes Magos para todos Vosotros) (3/3)
//(C)Sergio Salazar Latorre
// FDF - Fusion de Flujo
let l = 600
let np = 10
let c = Array(np)
let s = Array(np)
function setup() {
createCanvas(l,l);
rectMode(CENTER)
angleMode(DEGREES)
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(2)
this.ponCirculo(this.x, this.y, this.D*this.cD)
this.crearVariaciones()
}
dibujaCuadrado(){
this.prepararMovimiento(1)
this.ponCuadrado(this.x, this.y, this.D*this.cD)
this.crearVariaciones()
}
ponCirculo(x,y,D){
circle(x,y,D);
}
ponCuadrado(x,y,D){
square(x,y,D);
}
crearVariaciones(){
if(this.cc==1){
this.concentricos(3)
} else if(this.cc==2){
this.concentricos(2)
}
}
concentricos(partes){
let DD = this.D/partes
for(let i=1; i<partes;i++){
this.prepararMovimiento(1)
if(this.cc==1){
this.ponCirculo(this.x, this.y, this.D-DD*i*this.cD)
} else if(this.cc==2){
this.ponCuadrado(this.x, this.y, this.D-DD*i*this.cD)
}
}
}
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.1
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 - 003- Crear Variaciones", 10, l-9*2)
text("(C)Sergio Salazar Latorre", 10, l-5)
pop()
}
Comentarios
Publicar un comentario