猫史档案馆


【求助】柏林噪音视乎出了点问题

用户:卑微OIer卑微OIer查看:6 回复:6 评论:6 创建时间:2022-12-26T18:49:04


function grad(x, y) {
                        var vec = [x * 127.1 + y * 311.7 + seed, y * 269.5 + y * 1283.3 + seed];
                        var sin0 = Math.sin(vec[0]) * 43758.5453123;
                        var sin1 = Math.sin(vec[1]) * 43758.5453123;
                        vec[0] = (sin0 - Math.floor(sin0)) * 2.0 - 1.0;
                        vec[1] = (sin1 - Math.floor(sin1)) * 2.0 - 1.0;
                        var len = Math.sqrt(Math.pow(vec[0], 2) + Math.pow(vec[1], 2))
                        vec[0] /= len, vec[1] /= len;
                        return vec;
                    }
                    function perlin(x,y) {
                        let p0x = Math.floor(x);
                        let p0y = Math.floor(y);
                        let p1x = p0x;
                        let p1y = p0x + 1;
                        let p2x = p0x + 1;
                        let p2y = p0y + 1;
                        let p3x = p0x + 1;
                        let p3y = p0y;

                        var g0x = grad(p0x, p0y)[0];  // P0点的梯度
                        var g0y = grad(p0x, p0y)[1];
                        var g1x = grad(p1x, p1y)[0];  // P1点的梯度
                        var g1y = grad(p1x, p1y)[1];
                        var g2x = grad(p2x, p2y)[0];  // P2点的梯度
                        var g2y = grad(p2x, p2y)[1];
                        var g3x = grad(p3x, p3y)[0];  // P3点的梯度
                        var g3y = grad(p3x, p3y)[1];

                        var v0x = x - p0x;  // P0点的方向向量
                        var v0y = y - p0y;
                        var v1x = x - p1x;  // P1点的方向向量
                        var v1y = y - p1y;
                        var v2x = x - p2x;  // P2点的方向向量
                        var v2y = y - p2y;
                        var v3x = x - p3x;  // P3点的方向向量
                        var v3y = y - p3y;

                        var product0 = g0x * v0x + g0y * v0y;  // P0点梯度向量和方向向量的点乘
                        var product1 = g1x * v1x + g1y * v1y;  // P1点梯度向量和方向向量的点乘
                        var product2 = g2x * v2x + g2y * v2y;  // P2点梯度向量和方向向量的点乘
                        var product3 = g3x * v3x + g3y * v3y;  // P3点梯度向量和方向向量的点乘

                        let d0 = x - p0x;
                        let t0 = 6 * Math.pow(d0, 5.0) - 15 * Math.pow(d0, 4) + 10 * Math.pow(d0, 3);
                        let n0 = product1 * (1.0 - t0) + product3 * t0;
                        let n1 = product0 * (1.0 - t0) + product3 * t0;

                        let d1 = y - p0y;
                        let t1 = Math.pow(d1, 5.0) - 15.0 * Math.pow(d1, 4.0) + 10.0 * Math.pow(d1, 3.0);
                        return n1*(1.0-t1)+n0*t1;
                    }
                    const zoom = document.querySelector('.zoom').value;
                    if(!NumberReg.test(zoom))return;
                    for (let x = 0; x < MAP_SHAPE; x++) {
                        for (let y = 0; y < MAP_SHAPE; y++) {
                            voxels[x][y].height = perlin(x,y);
                        }
                    }

我console.log(voxels)的所有height属性时是NaN求助


回复

上一页1 页 / 共 1下一页
浮生awa浮生awa

这是人能看懂的东西吗。。。emotion_生病

点赞2


评论


卑微OIer卑微OIer

喵d求救啊啊啊

点赞0


评论


编码喵编码喵

seed你定义了吗。

点赞0


评论


卑微OIer卑微OIer

喵d

点赞0


评论


async_functionasync_function

数字不能乘数组

点赞0


评论


卑微OIer卑微OIer

ddd

点赞0


评论