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

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);