用于生成 2D 地形的 Java Perlin Noise

标签 java 2d generator terrain perlin-noise

更新:正式问题列表:

  1. 二维噪声实现的浮点值(输入参数和输出)代表什么? - 部分回答,输入是坐标。输出怎么样?另外,我可以使用我的整数作为坐标的 float 吗? 1.0、122.0 等?
  2. 在 2D 噪声生成器中实现种子的好方法是什么?我应该使用第三个参数作为种子将其设为 3D 噪声生成器吗?这是否意味着每个种子都可以产生独特的 2D 噪声?
  3. 与二维 map 一起,生成位图似乎是沿着相同的路线。 如何从输出生成位图?大概是 float 的。

我的问题是剪切和粘贴柏林噪声 2D 实现的浮点值(输入参数和输出)代表什么?我如何从它们生成位图?如果我可以获得某种数据类型的二维数组,我确信我可以弄清楚如何使用它来模拟我的地形。

而且,如果我可以确保可以为它们播种值,我会使用剪切和粘贴实现。这是问题的另一部分,这是我发现的一个未回答的问题here 。 - 在噪声发生器中实现种子的好方法是什么?

好吧,我知道这个问题已经被问过很多次了,所以让我解释一下我的研究和发现。

首先,我找到了this网站在这里,这似乎是向我解释的胜利者。然而,我随后又提出了另一个问题,我发现这个问题被问到了,但没有真正得到完全回答here .

然后,我尝试亲自动手,用 Java 编写一些代码,这是我选择的语言。我发现this ,这让我尝试了作为答案给出的哈希函数作为我的噪声函数,因为我可以在那里使用种子。然后我遇到了一个问题,它没有返回 float 来遵循教程中的其余过程。回到绘图板。一路上,我发现了更多有关于柏林噪音问题的网站。

我在这里发现了一个悬而未决的问题,我什至还没有想到过,因为我还没有让我的实现发挥作用。我再也找不到该链接,但它说了一些类似的话,即使您有复制并粘贴的实现,您放入函数中的浮点输入是什么?有人告诉我需要传递整数,即 map 上的 x 和 y。我也从剪切和粘贴实现中获得 float 输出。那些是什么意思?那些二维怎么样?如果我可以将事物保留为整数,这在我的大脑中是有意义的,但在某种程度上,我发现将它们保留为整数对于插值和平滑连续曲线的值来说是不合理的。

最佳答案

据我了解代码,这些只是您想要值的坐标。

使用float在这里似乎没有意义,除非你想支持无抖动的缩放。使用float值,您可以通过计算中间值轻松放大景观。

关于用于生成 2D 地形的 Java Perlin Noise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9632197/

相关文章:

streaming - 在 Elixir 中生成数字流的惯用方式是什么?

java - 如何在 Swing 中只重绘脏区域?

java - 用于 Java 的 JWT(JSON Web token )库

javascript - Node.js 生成器

java - 生成具有随机行长度的随机二维数组

c# - XNA-如何计算二维圆相互碰撞后的速度?

python - 如何在生成器对象中使用 unittest 的 self.assertRaises 异常?

java - 如何使用 Java 运行操作系统命令

JavaFX : Redirect Input/Output/Error From ProcessBuilder to TextArea?

2d - 什么类型的速度-时间曲线模拟在水平表面上滑动到停止的物体?