2016-08-24 2 views
0

Je veux générer un terrain aléatoire avec OpenSimplexNoise. Pour commencer, je veux juste obtenir un résultat et le dessiner dans une fenêtre.Dessiner et obtenir le résultat OpenSimplexNoise

Ma question est maintenant: Comment puis-je obtenir la bonne sortie de OpenSimplexNoise (parce qu'il y a beaucoup de méthodes et je ne sais pas lequel est le bon) et comment dessiner ce résultat.

Il devrait ressembler à ceci: 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? 
      } 
     } 
    } 

C'est le code actuel que j'ai.

Voici le lien vers OpenSimplexNoise pour tous ceux qui en ont besoin: https://gist.github.com/KdotJPG/b1270127455a94ac5d19

Répondre

1

Il y a en fait seulement 3 méthodes publiques - un pour chaque 2D, 3D & bruit 4D. Puisque vous remplissez un tableau 2D pour votre carte, utilisez la méthode 2D bruit eval, quelque chose comme ceci:

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

Par la suite, vous pouvez générer une couleur à partir des valeurs de carte comme suit:

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

L'auteur fournit également un exemple de code d'utilisation au OpenSimplexNoiseTest; il utilise la méthode eval 3D, mais maintient toujours la coordonnée z à zéro. Ma conjecture est l'exemple de code a été écrit avant qu'il a ajouté le 2D & implémentations 4D. En tout cas, ça marche toujours, mais ça peut être un peu plus lent que d'utiliser directement la 2D.