xxxxxxxxxx
140
//Code and Design by Phong Tran
//phongmusic.com
//@phongmusic
// recording and general setup variables
var t = 0;
var startMillis;
var duration = 10000; //duration in milliseconds
var fps = 60;
var recording = false;
var preview = false;
var elapsed;
// init
function setup() {
createCanvas(700, 700);
frameRate(fps);
}
// control draw
function draw() {
//reset millisecond counter on 1st draw
if (startMillis == null) {
startMillis = millis();
}
//seekbar -- preivew on, mouse acts as seek; off means play normal
if (preview) {
elapsed = map(mouseX,0,width,0,duration);
} else {
elapsed = millis() - startMillis;
}
//play or record
if (recording) {
t = map(elapsed, 0, duration, 0, 1);
draw_();
} else {
t = (elapsed/duration) % 1;
draw_();
}
}
/////////////////////////////////////////////////////////////
//sketch globals
let r = 50*2;
function tryp(q) {
for (let i = 0; i < 3; i++) {
if (i == 0) {
let ex = lerp(-r*sqrt(3),-2*r,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let es = lerp(0,-r*sqrt(3),map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cr = lerp(43,15,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cg = lerp(82,29,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cb = lerp(179,64,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
push();
stroke(cr,cg,cb);
translate(0,sqrt(3)*r/2);
rotate(map(q,0,1,0,2*TWO_PI+(PI/3)));
line(es,es,-r,ex)
pop();
} else if (i == 1) {
let ex = lerp(r,r*sqrt(3)*ease(q),map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
push();
let cr = lerp(43,61,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cg = lerp(82,245,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cb = lerp(179,193,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
stroke(cr,cg,cb);
translate(0,map(q,0,1,-r*sqrt(3)/2, r*sqrt(3)+(r*sqrt(3)/2)));
line(-ex,0,ex,0);
pop();
} else if (i == 2) {
let ex = lerp(-r*sqrt(3),-2*r,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let es = lerp(0,-r*sqrt(3),map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cr = lerp(43,15,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cg = lerp(82,29,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
let cb = lerp(179,64,map(cos(map(q,0,1,0,TWO_PI)),-1,1,1,0));
push();
stroke(cr,cg,cb);
translate(0,sqrt(3)*r/2);
rotate(map(q,0,1,0,-2*TWO_PI-(PI/3)));
line(-es,es,r,ex);
pop();
}
}
}
//actual draw function
function draw_() {
let n = int(width/(r*2));
let m = int(width/ (sqrt(3)*r));
//let n = 5;
//let m = 5;
background(15, 29, 64);
stroke(255);
strokeWeight(2);
push();
translate(width/2,height/2);
//rotate(map(ease(t),.5,1,0,-PI))
//rotate(map(t,0,.5,0,PI));
for (let i = -n; i < n; i++) {
for (let j = -m; j < m; j++) {
let tp = map(t,0,1,0,TWO_PI);
let tt = (t + map(i,-n,n,0,1)) % 1;
if(i==-n &&j ==-m) {
console.log(tt);
}
let ttp = map(tt,0,1,0,TWO_PI)
push();
//rotate(PI/2);
translate(i*((r*2)+(map(cos(ttp),-1,1,1.5,1)*r)),j*((sqrt(3)*r)+(map(cos(ttp),-1,1,2,0)*r)));
rotate(map(ease(tt),0,1,0,TWO_PI))
tryp(ease(tt));
pop();
push();
//rotate(PI/2);
tt = (t + map(i+.5,-n,n,0,1)) % 1;
ttp = map(tt,0,1,0,TWO_PI)
translate((i+.5)*((r*2)+(map(cos(ttp),-1,1,1.5,1)*r)),(j+.5)*((sqrt(3)*r)+(map(cos(ttp),-1,1,2,0)*r)));
rotate(PI);
rotate(map(ease(tt),0,1,0,-TWO_PI))
tryp(ease(tt));
pop();
}
}
pop();
}
function ease(p) {
return 3*p*p - 2*p*p*p
}