-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmake-layout.js
72 lines (59 loc) · 1.65 KB
/
make-layout.js
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
var fs = require('fs');
// dimensions in meters
var kCubeWidth = 0.2857,
kCubeMargin = .063,
kLedOffset = (1 / 60),
kLedsPerCube = 16;
var layout = [];
function makeCube(startPoint, cube) {
var result = [];
for (var i = 0; i < kLedsPerCube; i++) {
result.push({
point: [startPoint.x + (kLedOffset * i), startPoint.y, 0],
cubeId: cube.cubeId,
checker: cube.checker,
row: cube.coordinates.y,
col: cube.coordinates.x
});
}
if (cube.ltr) {
result.reverse();
}
return result;
}
var cubeOrder = [
[null, null, null, null, null, 20],
[null, null, null, null, 19, 18],
[null, null, null, 15, 16, 17],
[null, null, 0, 6, 7, 8],
[null, 1, 2, 11, 10, 9],
[5, 4, 3, 12, 13, 14]
];
var ltrCubes = [1, 2, 6, 7, 8, 12, 13, 14, 15, 16, 17, 20];
var checkerCubes = [5, 1, 0, 3, 15, 11, 19, 7, 13, 20, 17, 9];
var cubes = [];
for (var rowNum = 0; rowNum < cubeOrder.length; rowNum++) {
var row = cubeOrder[rowNum];
for (var colNum = 0; colNum < row.length; colNum++) {
var cubeVal = row[colNum];
if (cubeVal != null) {
cubes.push({
cubeId: cubeVal,
ltr: (ltrCubes.indexOf(cubeVal) == -1),
coordinates: { x: colNum, y: rowNum },
checker: (checkerCubes.indexOf(cubeVal) != -1)
});
}
}
}
cubes.sort(function(a, b) { return a.cubeId - b.cubeId; });
// console.log(cubes);
for (var i = 0; i < cubes.length; i++) {
var cube = cubes[i];
var startPoint = {
x: cube.coordinates.x * (kCubeWidth + kCubeMargin),
y: cube.coordinates.y * (kCubeWidth + kCubeMargin)
};
layout = layout.concat(makeCube(startPoint, cube));
}
fs.writeFileSync('layout.json', JSON.stringify(layout));