All files / dist hexagon.js

30% Statements 6/20
50% Branches 3/6
10% Functions 1/10
31.58% Lines 6/19
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    1x     1x   1x   1x   1x       1x                                                              
'use strict';
 
Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.generateGrid = undefined;
 
var _fp = require('lodash/fp');
 
var _fp2 = _interopRequireDefault(_fp);
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
// generate a rectangular grid of sizeX * sizeY hexagonal neurons
// with normalized euclidian distance of 1 between each neighbor
var generateGrid = exports.generateGrid = function generateGrid(sizeX, sizeY) {
 
    var margin = 1;
 
    var stepX = 1;
    // Pythagoras to the rescue
    var stepY = Math.sqrt(Math.pow(stepX, 2) - Math.pow(stepX / 2, 2));
 
    var getHexagon = function getHexagon(x, y) {
        return {
            pos: [x, y]
        };
    };
 
    var generateRow = function generateRow(y, i) {
        return _fp2.default.range(0, sizeX).map(function (x) {
            return x + margin;
        }).map(function (x) {
            return x + (i % 2 === 0 ? 0 : stepX / 2);
        }).map(function (x) {
            return getHexagon(x, y);
        });
    };
 
    return _fp2.default.flatten(_fp2.default.range(0, sizeY).map(function (y) {
        return y * stepY;
    }).map(function (y) {
        return y + margin;
    }).map(function (y, i) {
        return generateRow(y, i);
    }));
};