travelMap = {
return 0;
const travelMap = Array.from(
{length: canvasHeight},
(_, y) => Array.from(
{length: canvasWidth},
(_, x) => 0));
let xMin = Number.POSITIVE_INFINITY;
let xMax = Number.NEGATIVE_INFINITY;
let yMin = Number.POSITIVE_INFINITY;
let yMax = Number.NEGATIVE_INFINITY;
for (let y = 0; y < canvasHeight; y++) {
for (let x = 0; x < canvasWidth; x++) {
const pmsi = paths.sumMap[y][x];
if (pmsi === Infinity || pmsi <= resistanceResource) {
continue;
}
if (xMin > x) { xMin = x; }
if (xMax < x) { xMax = x; }
if (yMin > y) { yMin = y; }
if (yMax < y) { yMax = y; }
const u = 1;
const a = u / pmsi;
let p = paths.precessorMap[y][x];
while (p) {
travelMap[p.y][p.x] += a;
p = paths.precessorMap[p.y][p.x];
}
}
}
let min = Number.POSITIVE_INFINITY;
let max = Number.NEGATIVE_INFINITY;
for (let y = yMin; y <= yMax; y++) {
for (let x = xMin; x <= xMax; x++) {
let v = travelMap[y][x];
if (v < 0) { v = 0; }
travelMap[y][x] = v;
if (v > max) { max = v; }
if (v < min) { min = v; }
}
}
const range = max - min;
for (let y = yMin; y <= yMax; y++) {
for (let x = xMin; x <= xMax; x++) {
travelMap[y][x] = (travelMap[y][x] - min) / range;
}
}
return travelMap;
}