猫史档案馆


【box3】随机地形生成代码

用户:trigonometrictrigonometric查看:2 回复:3 评论:2 创建时间:2022-01-22T19:33:46


center_image

function per_1dim(dots,interval){
    var dot1,dot2,dif;
    var y=[];
    var i,j;
    for(i=1;i<dots.length;i++){
        dot1=dots[i];
        dot2=dots[i-1];
        dif=Math.abs(dot1-dot2);
        if(dot1<dot2){
            for(j=0;j<=3.14;j+=3.14/interval){
                y.push(dot2+(Math.cos(j)-1)/2*dif);
            }
        }else{
            for(j=3.14;j>=0;j-=3.14/interval){
                y.push(dot2+(Math.cos(j)+1)/2*dif);
            }
        }
    }
    return y;
}
function per_2dim(interval,min,max){
    var dots=[],y1=[],y2=[],y3=[];
    var x,y,z;
    for(x=0;x<=256;x+=interval){
        dots.push([]);
        for(z=0;z<=256;z+=interval){
            y=min+Math.random()*(max-min);
            dots[x/interval].push(y);
        }
    }
    for(x=0;x<=256;x+=interval){
        y1.push(per_1dim(dots[x/interval],interval));
    }
    for(x=0;x<=256;x++){
        y2.push([]);
        for(z=0;z<=256;z+=interval){
            y2[x].push(y1[z/interval][x]);
        }
    }
    for(x=0;x<=256;x++){
        y3.push(per_1dim(y2[x],interval));
    }
    return y3;
}
async function terrain(min,max){
    var x,y,z;
    var per128=per_2dim(128,min,max);
    var per喵=per_2dim(喵,min,max);
    var per32=per_2dim(32,min,max);
    var per16=per_2dim(16,min,max);
    var per8=per_2dim(8,min,max);
    var l=[];
    for(x=0;x<=256;x++){
        l.push([]);
        for(z=0;z<=256;z++){
            l[x].push(Math.ceil((per128[x][z]+per喵[x][z]+per32[x][z]+per16[x][z]+per8[x][z])/5));
        }
    }
    for(x=0;x<=256;x++){
        for(z=0;z<=256;z++){
            for(y=0;y<l[x][z];y++){
                voxels.setVoxelId(x,y,z,125);
            }
            voxels.setVoxelId(x,l[x][z],z,127);
        }
        await sleep(100);
    }
}
terrain(0,62);


回复

上一页1 页 / 共 1下一页
trigonometrictrigonometric

terrain(min,max)

第一个参数为高度最小值,第二个参数为高度最大值

如果高度过高可尝试把min参数设为负数

点赞4


评论


满月居于夜空满月居于夜空

谢谢

点赞1


评论


一个STUB用户_14302596一个STUB用户_14302596

顶顶顶

点赞0


评论