ShadowDragon
ShadowDragon

Reputation: 2398

Draw and get OpenSimplexNoise result

I want to generate a random terrain with OpenSimplexNoise. To start I just want to get a result and draw it to a window.

My question is now: How can I get the correct output of OpenSimplexNoise (cause there are many methods and I just don't know which is the correct one) and how to draw this result.

It should look like this: 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?
            }
        }
    }

This is the current code I've got.

Here is the link to OpenSimplexNoise for anyone who needs it: https://gist.github.com/KdotJPG/b1270127455a94ac5d19

Upvotes: 0

Views: 1177

Answers (1)

Pikalek
Pikalek

Reputation: 946

There's actually only 3 public methods - one for each for 2D, 3D & 4D noise. Since you're filling a 2D array for your map , use the 2D noise eval method, something like this:

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

Later on, you can generate a color from the map values as follows:

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

The author also provides example usage code in OpenSimplexNoiseTest; he's using the 3D eval method, but always holding the z coord at zero. My guess is the example code was written before he added the 2D & 4D implementations. At any rate, it still works, but it might be a little slower than directly using 2D.

Upvotes: 1

Related Questions