小编RgS*_*gSW的帖子

噪音产生:'室内噪音'

上周我开发了一个世界发电机(用于Minecraft mod).然而,我并不只是寻找Perlin噪音,而是基于细胞噪音.我想生成一种地下实验室,有几个不同大小的房间.

为了解释这个问题,我使用2D示例.

噪声生成器采用网格单元格位置(int x, int y),并返回具有此结构的对象:

boolean top;
boolean right;
boolean down;
boolean left;

int roomType;
Run Code Online (Sandbox Code Playgroud)

4个布尔代表启用或禁用的墙:

它分别roomType代表房间的类型.

最终结果应该是这样的: 在此输入图像描述
这里,背景棋盘图案代表基础网格,黑色线条代表墙壁.这只是一个可以生成的简单示例,但在实际情况中,网格在x和y方向都是无限的.

我现在遇到的问题是噪声生成器只接受x和y坐标,它应该是它应该生成的网格单元的坐标.有一个种子可以为哈希函数生成更多随机种子:

long seed = 0x75fd239de48;

Random r = new Random(seed);
int seed1 = r.nextInt();
int seed2 = r.nextInt();
// etc.
Run Code Online (Sandbox Code Playgroud)

我可以使用哈希函数:,根据种子Hash.hash2D(int seed, int x, int y)返回double一个坐标随机.

这将提供为周围细胞生成信息的能力.

要轻松生成更大的房间,您可以设置房间的最大尺寸,并检查试图大于1x1的房间的区域.如果他们在那里,并将跨越到当前房间,房间将是另一个房间的延伸.但是,检查房间是否会延伸需要检查是否尚未延伸(否则,不需要的房间扩展看起来像是延伸到另一个房间的房间基础),这会进入无限循环.

在我的例子中,有一个给定的房间类型表,它们的大小和重量.例:

name:   size [weight]
room-1: 1x1  [128]
room-2: 1x1  [128]
room-3: 2x1  [16]
room-4: 1x2  [16]
room-5: 2x2  [8]
room-6: 3x1 …
Run Code Online (Sandbox Code Playgroud)

java noise-generator

7
推荐指数
1
解决办法
79
查看次数

有两个圆圈和一个点.如何绕过它

我在设计图标时遇到了数学问题,我正在寻找一个JavaScript解决方案.

我拿了2个圆圈,每个圆圈的半径和位置都不同,还有一个点.我想知道包含两个圆圈的最小圆圈并沿着这一点.

在此输入图像描述

红色圆圈是我想知道的圆圈

想要一个像这样的功能:

function calculate(c1x, c1y, c1r, c2x, c2y, c2r, px, py){
    //Calculation
    return {
        x: outX,
        y: outY,
        r: outR
    };
}
Run Code Online (Sandbox Code Playgroud)

javascript math

2
推荐指数
1
解决办法
92
查看次数

标签 统计

java ×1

javascript ×1

math ×1

noise-generator ×1