2016-08-24 30 views
0

我想用OpenSimplexNoise生成随机地形。开始我只想得到一个结果并将其绘制到窗口中。绘制并获取OpenSimplexNoise结果

我现在的问题是:如何获得OpenSimplexNoise的正确输出(因为有很多方法,我只是不知道哪个是正确的)以及如何绘制这个结果。

它应该是这样的: enter image description here

public double[][] generateMap(long seed, int width, int height) { 
     double[][] map = new double[width][height]; 

     // start generating things here, just how? 
     OpenSimplexNoise simplex = new OpenSimplexNoise(seed); 

     return map; 
    } 

    public void drawMap(double[][] map, Graphics g) { 
     for(int x = 0; x < map.length; x++) { 
      for(int y = 0; y < map[0].length; y++) { 
       Color color = new Color(); // how to get the color here? 
      } 
     } 
    } 

这是当前的代码,我已经得到了。

这里是OpenSimplexNoise的人谁需要它的链接: https://gist.github.com/KdotJPG/b1270127455a94ac5d19

回答

1

其实这里只有3公有方法 - 每个为2D,3D & 4D噪音。 既然你填写你的地图的二维数组,使用二维噪声eval方法, 是这样的:

for(int x=0; x<width; x++){ 
    for(int y=0<y<height; y++){ 
     map[x][y] = simplex.eval(x, y); 
    } 
} 

之后,你可以生成从地图值的颜色如下:

Color color = new Color(map[x][y], ma[x][y], map[x][y]); 

作者还提供了示例使用代码OpenSimplexNoiseTest;他正在使用3D eval方法,但始终将z坐标保持为零。我的猜测是示例代码是在他添加2D 4D实现之前编写的。无论如何,它仍然有效,但它可能比直接使用2D稍慢。