用户:
不知道该叫啥的一只萌新查看:3 回复:4 评论:3 创建时间:2021-11-06T16:02:08
以下代码用于平滑地图
const o = 1.5;
function G(x, y) {
var e = Math.E;
var pi = Math.PI;
return 1 / (2 * pi * o * o) * Math.pow(e, -((x * x + y * y) / (2 * o * o)));
}
var High = [];
(async function () {
for (let n = 0; n < 4; n++) {
High = []
for (let x = 0; x <= 256; x++) {
High.push([]);
for (let z = 0; z <= 256; z++) {
y = 63;
for (let y = 62; y >= 0; y--) {
if (voxels.getVoxelId(x, y, z) != 0) {
High[x].push(y);
break;
}
}
}
}
for (let x = 1; x <= 255; x++) {
for (let z = 1; z <= 255; z++) {
var sub = 0;
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
sub += G(i - 1, j - 1);
}
}
var hsub = 0;
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
hsub += G(i - 1, j - 1) / sub * High[x + i - 1][z + j - 1];
}
}
for (let i = 0; i < Math.ceil(hsub); i++) { voxels.setVoxel(x, i, z, "dirt") }
voxels.setVoxel(x, Math.ceil(hsub), z, "grass");
for (let i = Math.ceil(hsub) + 1; i <= 63; i++) { voxels.setVoxel(x, i, z, "") }
await sleep(1)
}
}
}
})()
原理我就不讲了
涉及到高中的高斯正态分布
放在代码区!!!
不要放在控制台!!!
七式草莓控制台版:
const o = 1.5;
function G(x, y) {
var e = Math.E;
var pi = Math.PI;
return 1 / (2 * pi * o * o) * Math.pow(e, -((x * x + y * y) / (2 * o * o)));
};
var High = [];
(async function () {
for (let n = 0; n < 4; n++) {
High = [];
for (let x = 0; x <= 256; x++) {
High.push([]);
for (let z = 0; z <= 256; z++) {
y = 63;
for (let y = 62; y >= 0; y--) {
if (voxels.getVoxelId(x, y, z) != 0) {
High[x].push(y);
break;
}
}
}
};
for (let x = 1; x <= 255; x++) {
for (let z = 1; z <= 255; z++) {
var sub = 0;
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
sub += G(i - 1, j - 1);
}
};
var hsub = 0;
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
hsub += G(i - 1, j - 1) / sub * High[x + i - 1][z + j - 1];
}
};
for (let i = 0; i < Math.ceil(hsub); i++) { voxels.setVoxel(x, i, z, "dirt") };
voxels.setVoxel(x, Math.ceil(hsub), z, "grass");
for (let i = Math.ceil(hsub) + 1; i <= 63; i++) { voxels.setVoxel(x, i, z, "") };
await sleep(1);
}
}
}
})()
点赞0
评论