xxxxxxxxxx
132
/* export SVG
DDF 2018
need to have p5.svg.js in project and in index.html
see -https://github.com/zenozeng/p5.js-svg
this will save an SVG file in your download folder
*/
//164, 3369, 7509, 9832
var cnv;
var wid = 600;
var hei = 600;
var NB_FRAMES = 110;
var frame_count = 0;
var Objects = [];
var NB = 20; //columns -1
var Nt =50; //lines -1
var phrase = `
__
|__| ______
| |/ ___/
| |\___ \
/\__| /____ >
\______| \/
`
var index_phrase = [" __ ", " |__| ______ ", " | |/ ___/ ", " | |___ ", " /__| /____ > ", " ______| / ", " "]
NB = index_phrase.length
function activation(t) {
return ((1 - cos(2 * PI * t)) / 2) ** 1;
}
function setup() {
curSeed = 164;
noiseSeed(curSeed);
randomSeed(1);
createCanvas(wid, hei, SVG);
strokeWeight(1); // do 0.1 for laser
stroke(255, 0, 0); // red is good for laser
noFill();
//cnv.parent("canvas");
background(0);
for (var i = 0; i < NB; i++) {
Objects[i] = new object(i);
}
// better not to have a fill for laser
}
function object(id) {
this.id = id;
this.draw = function() {
var t = ((frame_count) % NB_FRAMES) / NB_FRAMES;
var x0 = lerp(0, wid, this.id / NB);
theta = PI / 2;
var xx = x0;
var yy = 0;
var step = hei / Nt;
var turn = lerp(0, 0.4, activation((this.id / NB + 0 * t) % 1));
stroke(255);
strokeWeight(1);
noFill();
// beginShape();
// vertex(xx, yy);
textSize(25);
for (var i = 0; i <= Nt; i++) {
theta += turn * sin(100 * noise(1000) + 2 * PI * (15 * noise(0.2 * this.id / NB, 0.02 * i) + t));
xx += step * cos(theta);
yy += step * sin(theta);
var xx2 = lerp(xx, x0, (i / Nt) * (i / Nt) * (i / Nt));
var yy2 = lerp(yy, lerp(0, hei - 0, i / Nt), max((i / Nt), 1 - sqrt(i / Nt)));
text(phrase.charAt(i), xx2, yy2);
}
//endShape();
}
}
function mousePressed() {
curSeed = floor(random() * 10000);
noiseSeed(curSeed);
console.log(curSeed);
}
function draw() {
background(0);
var t = ((frame_count) % NB_FRAMES) / NB_FRAMES;
//for (var i = 0; i < NB; i++) Objects[i].draw();
noStroke();
fill(255);
text("seed : " + curSeed, 10, 10);
frame_count++;
if (frame_count <= 100 && frame_count > 80) {
}
//////////////////////////////////////EXPORT
if (keyCode === LEFT_ARROW) {
save("mySVG.svg");
print("saved svg");
noLoop();
}
}