mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
v 0.8.32b
This commit is contained in:
parent
83585c3081
commit
dd83a8c0a0
4 changed files with 87 additions and 14 deletions
|
|
@ -112,24 +112,30 @@
|
|||
}
|
||||
|
||||
// depression filling algorithm (for a correct water flux modeling)
|
||||
function resolveDepressions() {
|
||||
const resolveDepressions = function() {
|
||||
console.time('resolveDepressions');
|
||||
const cells = pack.cells;
|
||||
const land = cells.i.filter(i => cells.h[i] >= 20 && cells.h[i] < 95 && !cells.b[i]); // exclude near-border cells
|
||||
land.sort(highest); // highest cells go first
|
||||
let depressed = false;
|
||||
|
||||
for (let l = 0, depression = Infinity; depression > 1 && l < 100; l++) {
|
||||
depression = 0;
|
||||
for (const i of land) {
|
||||
const minHeight = d3.min(cells.c[i].map(c => cells.h[c]));
|
||||
if (minHeight === 100) continue; // already max height
|
||||
if (cells.h[i] <= minHeight) {cells.h[i] = minHeight + 1; depression++;}
|
||||
if (cells.h[i] <= minHeight) {
|
||||
cells.h[i] = minHeight + 1;
|
||||
depression++;
|
||||
depressed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.timeEnd('resolveDepressions');
|
||||
//const depressed = cells.i.filter(i => cells.h[i] >= 20 && cells.h[i] < 95 && !cells.b[i] && cells.h[i] <= d3.min(cells.c[i].map(c => cells.h[c])));
|
||||
//debug.selectAll(".deps").data(depressed).enter().append("circle").attr("r", 0.8).attr("cx", d => cells.p[d][0]).attr("cy", d => cells.p[d][1]);
|
||||
return depressed;
|
||||
}
|
||||
|
||||
// add more river points on 1/3 and 2/3 of length
|
||||
|
|
@ -221,6 +227,6 @@
|
|||
return round(right + left, 2);
|
||||
}
|
||||
|
||||
return {generate, addMeandring, getPath};
|
||||
return {generate, resolveDepressions, addMeandring, getPath};
|
||||
|
||||
})));
|
||||
Loading…
Add table
Add a link
Reference in a new issue