У меня есть простой метод, который генерирует двумерные карты островов из SimpleX Noise, но он оставляет одну большую проблему. Работает хорошо, но оставляет острые углы.
![Sharp corners on 2D Tile Map](https://i.stack.imgur.com/FPj82.png)
То, что я хотел бы сделать, это взять это и вычислить соседей, чтобы добавить правильные плитки для краев и углов, но я не уверен, как добавить это. Как лучше всего это вычислить?
generateMap()
{
let outputMap = [];
for(let y = 0; y < this.tileCount; y++)
{
outputMap[y] = [];
for(let x = 0; x < this.tileCount; x++)
{
let nx = x / this.tileCount - 0.5, ny = y / this.tileCount - 0.5;
let e = 1 + +Math.abs(this.heightMapGen.noise2D(1 * nx, 1 * ny));
e += 0.5 + +Math.abs(this.heightMapGen.noise2D(2 * nx, 2 * ny));
e += 0.25 + +Math.abs(this.heightMapGen.noise2D(4 * nx, 4 * ny));
let output = (Math.pow(e, 0.21) % 1).toFixed(2).split(".");
outputMap[y][x] = parseFloat(output[1]);
if (outputMap[y][x] <= 25)
{
outputMap[y][x] = 0; // Water //
} else {
// Terrain //
switch(outputMap[y][x])
{
case 28:
case 29:
outputMap[y][x] = 2;
break;
case 27:
outputMap[y][x] = 1;
break;
case 26:
outputMap[y][x] = 4;
break;
default:
outputMap[y][x] = 3;
}
}
}
}
return outputMap;
}