Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从2D函数生成3D柏林噪波函数_C_Opengl_Noise_Perlin Noise - Fatal编程技术网

C 从2D函数生成3D柏林噪波函数

C 从2D函数生成3D柏林噪波函数,c,opengl,noise,perlin-noise,C,Opengl,Noise,Perlin Noise,所以,我尝试使用openGL绘制随时间变化的抽象形状。为此,我想使用柏林噪声函数。这段代码()对我来说是一个完美的开始,除了这里找到的函数只需要两个坐标。我想要一个带两个空间坐标的,第三个,随时间变化 我的问题是:是否可以调整此函数以使用一个或多个坐标?3d柏林噪声如何? 为几何体使用两个坐标,一个用于时间。是的,这是可能的 您可以将时间维度视为空间维度而不存在任何问题 对于2D噪波,您将使用如下2D插值,以双线性为例,但该想法应适用于双三次插值等: 第一步: 您有4个外部值,其中一个点用于获

所以,我尝试使用openGL绘制随时间变化的抽象形状。为此,我想使用柏林噪声函数。这段代码()对我来说是一个完美的开始,除了这里找到的函数只需要两个坐标。我想要一个带两个空间坐标的,第三个,随时间变化


我的问题是:是否可以调整此函数以使用一个或多个坐标?

3d柏林噪声如何?

为几何体使用两个坐标,一个用于时间。

是的,这是可能的

您可以将时间维度视为空间维度而不存在任何问题

对于2D噪波,您将使用如下2D插值,以双线性为例,但该想法应适用于双三次插值等:

第一步:

您有4个外部值,其中一个点用于获取的值

+    +

  x


+    +
第二步:

在Y轴上插值

+-+--+

  x


+-+--+
+-+--+
  |
  x
  |
  |
+-+--+
第三步:

在Y轴上插值

+-+--+

  x


+-+--+
+-+--+
  |
  x
  |
  |
+-+--+
现在我们有了插值


现在,要添加第三个维度,我们从8个值开始,并添加一个额外的步骤:在Z轴上插值。这将扩展到任意多个维度。

此方法比单纯形噪声慢,并产生更多(大多数情况下较小)伪影;)@猴子:是的,但是OP要求柏林噪音,所以我不想把他弄糊涂。