-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsplash-v5.js
More file actions
84 lines (70 loc) · 2.05 KB
/
splash-v5.js
File metadata and controls
84 lines (70 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
var Canvas = require('drawille');
var line = require('bresenham');
var smoothstep = require('smoothstep');
var Watercolor = require('watercolor'),
watercolor = Watercolor({
style : 'normal',
color : 'green'
});
var logoWidth = 160;
var logoHeight = 45;
var logoData = require("./splash/logo.js");
var logoCoords = [];
var canvas = new Canvas(160, 92);
for(var r = 0; r < logoHeight; r++) {
for(var c = 0; c < logoWidth; c++) {
if(logoData[r*logoWidth+c] == 1)
logoCoords.push([0 + c,20 + r]);
}
}
var pixel;
var timer;
function randomInt (low, high) {
return Math.floor(Math.random() * (high - low) + low);
}
var paths = [];
var path;
var smoothed;
var index;
for(var i = 0; i < logoCoords.length; i++) {
path = line(randomInt(0,159),randomInt(0,91),logoCoords[i][0],logoCoords[i][1]).reverse();
smoothed = [];
for(var s = 0; s <= 50; s++) {
//console.log(path.length + " " + parseInt(smoothstep(0,path.length,s) * path.length,10));
index = parseInt(smoothstep(0,path.length,s) * path.length,10);
index = (index < 0) ? 0 : index;
// index = (index > path.length - 1) ? path.length - 1 : index;
if(index >= path.length - 1)
{
smoothed.push(path[path.length - 1]);
break;
}
smoothed.push(path[index]);
}
paths.push(smoothed);
}
var staticPixels = [];
var currentPixel;
function draw() {
canvas.clear();
for(var i = 0; i < paths.length; i++) {
if (staticPixels.length != 2309 ) {
if(paths[i].length != 0) {
if(paths[i].length == 1) {
staticPixels.push(paths[i].pop());
} else {
currentPixel = paths[i].pop();
//if(currentPixel == undefined) {console.log(paths[i])};
canvas.set(currentPixel['x'], currentPixel['y']);
}
}
} else{ clearInterval(timer);}
}
for(var i = 0; i < staticPixels.length; i++) {
currentPixel = staticPixels[i];
canvas.set(currentPixel['x'], currentPixel['y']);
}
watercolor.write(canvas.frame());
}
watercolor.pipe(process.stdout);
timer = setInterval(draw, 50);