blob: d683fb63c2d165b7eb0b2ab84e47f9d24537ac3b (
plain)
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
|
'use strict';
// Draws small moving gradient boxes and repeats them.
const Mirrors = function (modulation, width, height, renderer) {
let response = [];
let scale = 2 + Math.round(Math.random() * 4);
let scaledHeight = Math.floor(height / scale);
let scaledWidth = Math.floor(width / scale);
for (let i = 0; i < scaledHeight; i++) {
let row = [];
for (let j = 0; j < scaledWidth; j++) {
let red = ((modulation + i) * 255 / height) % 255;
let blue = ((modulation + j) * 255 / width) % 255;
let green = ((modulation + i * j) * 255 / (width * height)) % 255;
let cell = [renderer(red, blue, green), ' '];
row.push(cell.join(''));
}
let rowText = '';
for (let j = 0; j < scale; j++) {
rowText += row.reverse().join('');
}
for (let j = 1; j < scale; j++) {
response[j * i] = rowText;
response[(height - 1 - (j * i))] = rowText;
}
}
return response.join('\n');
};
module.exports = Mirrors;
|