()
| 30 | var dimY = 1; |
| 31 | |
| 32 | function process() { |
| 33 | |
| 34 | var data = readFile(inputPath); |
| 35 | data = JSON.parse(data); |
| 36 | |
| 37 | if (!(data instanceof Array)) { |
| 38 | throw new Error('Data should be array'); |
| 39 | } |
| 40 | |
| 41 | var xMin = Infinity; |
| 42 | var xMax = -Infinity; |
| 43 | var yMin = Infinity; |
| 44 | var yMax = -Infinity; |
| 45 | |
| 46 | data.forEach(function (point) { |
| 47 | xMin = Math.min(point[dimX], xMin); |
| 48 | xMax = Math.max(point[dimX], xMax); |
| 49 | yMin = Math.min(point[dimY], yMin); |
| 50 | yMax = Math.max(point[dimY], yMax); |
| 51 | }); |
| 52 | |
| 53 | console.log('xMin', xMin, 'xMax', xMax, 'yMin', yMin, 'yMax', yMax); |
| 54 | |
| 55 | var cellWidth = (xMax - xMin) / xGridCount; |
| 56 | var cellHeight = (yMax - yMin) / yGridCount; |
| 57 | |
| 58 | var grids = []; |
| 59 | var gridsSize = []; |
| 60 | |
| 61 | data.forEach(function (point) { |
| 62 | var gridXIndex = Math.floor((point[dimX] - xMin) / cellWidth); |
| 63 | var gridYIndex = Math.floor((point[dimY] - yMin) / cellHeight); |
| 64 | |
| 65 | var line = grids[gridYIndex] || (grids[gridYIndex] = []); |
| 66 | var cell = line[gridXIndex] || (line[gridXIndex] = []); |
| 67 | |
| 68 | cell.push(point); |
| 69 | |
| 70 | gridsSize[gridYIndex] = gridsSize[gridYIndex] || []; |
| 71 | gridsSize[gridYIndex][gridXIndex] = gridsSize[gridYIndex][gridXIndex] || []; |
| 72 | gridsSize[gridYIndex][gridXIndex] = cell.length; |
| 73 | }); |
| 74 | |
| 75 | // Sort for render outline firstly. |
| 76 | for (var i = 0; i < grids.length; i++) { |
| 77 | var line = grids[i]; |
| 78 | if (!line || !line.length) { |
| 79 | continue; |
| 80 | } |
| 81 | |
| 82 | for (var j = 0; j < line.length; j++) { |
| 83 | var cell = line[j]; |
| 84 | if (!cell || !cell.length) { |
| 85 | continue; |
| 86 | } |
| 87 | |
| 88 | cell.sort(function (a, b) { |
| 89 | return b.length - a.length; |
no test coverage detected
searching dependent graphs…