2016-08-24 16 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? 
      } 
     } 
    } 

이것은 내가있어 현재의 코드입니다. - 2D 각 하나, 3D & 4D 소음 https://gist.github.com/KdotJPG/b1270127455a94ac5d19

답변

1

실제로 불과 3 대중 가지 방법이있다 : 여기

는 그것을 필요로 누구나 OpenSimplexNoise 할 수있는 링크입니다. 당신이 당신의지도에 대한 2 차원 배열을 작성하고 있기 때문에, 2D 소음 평가 방법은,이 같은 것을 사용 : 다음과 같이 나중에

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 평가 방법을 사용하고 있지만 항상 z 좌표를 0으로 유지합니다. 내 생각에 2D 코드4D 구현을 추가하기 전에 예제 코드가 작성되었습니다. 어쨌든 여전히 작동하지만 2D를 직접 사용하는 것보다 조금 느릴 수 있습니다.