用户:小苏打_查看:36 回复:17 评论:36 创建时间:2022-07-10T10:49:01
/*VALUENOISE */
async function valuenoise(p1, p2, p3, p4, nv1, nv2, nv3, nv4, func){
/**
* y
* ↑
* | (0,2) p3 (2,2) p4
* | (0,1) (1,1) (2,1) (3,1)
* | (0,0) p1 (2,0) p2
* +------------------------->x
* 默认为矩形
*
* eg:
* p1(1,0)
* p2(3,0)
* p3(1,2)
* p4(3,2)
*/
if(nv1 === void 0){
nv1 = Math.floor(Math.random()*60)+1;
}
if(nv2 === void 0){
nv2 = Math.floor(Math.random()*60)+1;
}
if(nv3 === void 0){
nv3 = Math.floor(Math.random()*60)+1;
}
if(nv4 === void 0){
nv4 = Math.floor(Math.random()*60)+1;
}
if(func === void 0){
func = x => 6*x**5 - 15*x**4 + 10*x**3;
}
let p1x = p1.z;
let p2x = p2.z;
let p3x = p3.z;
let p4x = p4.z;
let p1y = p1.x;
let p2y = p2.x;
let p3y = p3.x;
let p4y = p4.x;
for(let x=p1.z;x<=p2.z;x++){
for(let y=p1.x;y<=p3.x;y++){
// if((x==p1.z || x==p2.z || x==p3.z || x==p4.z) && (y==p1.x || y==p2.x || y==p3.x || y==p4.x)){
// continue;
// }
let n1 = (func((x-p1x)/(p2x-p1x))*nv1 + func((p2x-x)/(p2x-p1x))*nv2);
let n2 = (func((x-p3x)/(p4x-p3x))*nv3 + func((p4x-x)/(p4x-p3x))*nv4);
let res = (func((y-p1y)/(p3y-p1y))*n1 + func((p3y-y)/(p3y-p1y))*n2);
await sleep(1);
for(let z=8;z<=res;z++){
voxels.setVoxel(y,z,x,'stone');
}
}
}
}
function gethight(x,z){
for(let y=0;y<=喵;y++){
if(voxels.getVoxelId(x,y,z)!=235){
return y-1;
}
}
return 114514;
}
!(async function(){
for(let x=0;x<=256;x+=16){
for(let z=0;z<=256;z+=16){
for(let y=0;y<=Math.round(Math.random()*32)+32;y++){
voxels.setVoxel(x,y,z,'carpet_08');
voxels.setVoxel(x-1,y,z,'carpet_08');
voxels.setVoxel(x,y,z-1,'carpet_08');
voxels.setVoxel(x-1,y,z-1,'carpet_08');
}
}
}
for(let x=0;x<=256;x+=16){
for(let z=0;z<=256;z+=16){
valuenoise(
new Box3Vector3(x,0,z),
new Box3Vector3(x,0,z+15),
new Box3Vector3(x+15,0,z),
new Box3Vector3(x+15,0,z+15),
gethight(x+15,z+15),
gethight(x+15,z),
gethight(x,z+15),
gethight(x,z),
)
await sleep(100)
}
}
})()紧急修复bug(控制台可用)
/*VALUENOISE */
async function valuenoise(p1, p2, p3, p4, nv1, nv2, nv3, nv4, func){
/**
* y
* ↑
* | (0,2) p3 (2,2) p4
* | (0,1) (1,1) (2,1) (3,1)
* | (0,0) p1 (2,0) p2
* +------------------------->x
* 默认为矩形
*
* eg:
* p1(1,0)
* p2(3,0)
* p3(1,2)
* p4(3,2)
*/
if(nv1 === void 0){
nv1 = Math.floor(Math.random()*60)+1;
}
if(nv2 === void 0){
nv2 = Math.floor(Math.random()*60)+1;
}
if(nv3 === void 0){
nv3 = Math.floor(Math.random()*60)+1;
}
if(nv4 === void 0){
nv4 = Math.floor(Math.random()*60)+1;
}
if(func === void 0){
func = x => 6*x**5 - 15*x**4 + 10*x**3;
}
let p1x = p1.z;
let p2x = p2.z;
let p3x = p3.z;
let p4x = p4.z;
let p1y = p1.x;
let p2y = p2.x;
let p3y = p3.x;
let p4y = p4.x;
for(let x=p1.z;x<=p2.z;x++){
for(let y=p1.x;y<=p3.x;y++){
let n1 = (func((x-p1x)/(p2x-p1x))*nv1 + func((p2x-x)/(p2x-p1x))*nv2);
let n2 = (func((x-p3x)/(p4x-p3x))*nv3 + func((p4x-x)/(p4x-p3x))*nv4);
let res = (func((y-p1y)/(p3y-p1y))*n1 + func((p3y-y)/(p3y-p1y))*n2);
await sleep(1);
for(let z=8;z<=res;z++){
voxels.setVoxel(y,z,x,'stone');
}
}
}
}
function gethight(x,z){
for(let y=0;y<=喵;y++){
if(voxels.getVoxelId(x,y,z)!=235){
return y-1;
}
}
return 114514;
}
!(async function(){
for(let x=0;x<=256;x+=16){
for(let z=0;z<=256;z+=16){
for(let y=0;y<=Math.round(Math.random()*32)+16;y++){
voxels.setVoxel(x,y,z,'carpet_08');
voxels.setVoxel(x-1,y,z,'carpet_08');
voxels.setVoxel(x,y,z-1,'carpet_08');
voxels.setVoxel(x-1,y,z-1,'carpet_08');
}
}
}
for(let x=0;x<=256;x+=16){
for(let z=0;z<=256;z+=16){
valuenoise(
new Box3Vector3(x,0,z),
new Box3Vector3(x,0,z+15),
new Box3Vector3(x+15,0,z),
new Box3Vector3(x+15,0,z+15),
gethight(x+15,z+15),
gethight(x+15,z),
gethight(x,z+15),
gethight(x,z),
);
await sleep(100);
}
}
})();
外加效果演示

点赞1
评论