猫史档案馆


[岛三]高斯模糊

用户:不知道该叫啥的一只萌新不知道该叫啥的一只萌新查看: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)
            }
        }
    }

})()

原理我就不讲了

涉及到高中的高斯正态分布

放在代码区!!!

不要放在控制台!!!


回复

上一页1 页 / 共 1下一页
不知道该叫啥的一只萌新不知道该叫啥的一只萌新

本代码应用在256*256地图

点赞2


评论


七式草莓七式草莓

控制台版:

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


评论


YDS尹子YDS尹子

救命animation关键帧怎么搞

点赞0


评论


编码喵编码喵

不错不错

点赞0


评论