2015-01-11 5 views
0

그래서 임의로 생성 된이 타일 세트는 원으로 싸여 있으며 원 주위를 스크롤하는 방법을 잘 모르겠습니다. 기본적으로 그것은 2D로되어 있고 행성 회전의 환영을주기 위해 감싸 야하고 제어 가능한 속도로 움직일 필요가있는 측면 뷰 행성입니다. 현재 렌더링 코드를 아래에 게시하여 작업중인 아이디어를 얻을 수 있지만 x 및 y를 어떻게 스크롤해야 할 지 잘 모르겠습니다. 다음과 같은 행성이 어떻게 표시되는지를 보여줍니다 : 당신이 구 그리기되지 않습니다 그것의 모양에서 https://imgur.com/Ytdz2mGJava 2D Sphere 스크롤

for (int x = 0; x < planet1.length; x++) 
    { 
     for (int y = 0; y < planet1[0].length; y++) 
     { 
      if (planet1[x][y] == 1 || planet1[x][y] == 2) 
      { 
       g.drawImage(water, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == 3) 
      { 
       g.drawImage(desert, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == 4) 
      { 
       g.drawImage(plains, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == 5) 
      { 
       g.drawImage(grassland, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == 6) 
      { 
       g.drawImage(forest, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == 7) 
      { 
       g.drawImage(hills, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == 8) 
      { 
       g.drawImage(mountain, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == 9) 
      { 
       g.drawImage(mountain, x * 32, y * 32); 
      } 
      else if (planet1[x][y] == -1) 
      { 

      } 
     } 
    } 
+0

출력이 무엇인지 구체적으로 설명해야합니다 . 한 방향으로 픽셀을 스크롤하고 래핑하기 만하면됩니까? 그것은 구를 2 차원으로 투영하는 것과 아무런 관련이 없습니다. 그 방향으로의 해결책을 얻으려면 삼각법에 대한 이해가 필요하고 지형 데이터를 저장하는 더 좋은 방법이 필요할 것입니다. –

답변

0

, 오히려 반복 사각형은 원 클리핑됩니다.

실제로 회전하려는 것처럼 보이게하려면 구의 직교 투영을해야합니다.
어떤 경우에, 당신은 당신의 타일 데이터가 θ, φ 이상에 저장되어 있어야하고 φ = acos (길이 (x, y)/반경)를 사용하여 각도로 화면상의 xy의 상수 맵을 생성하십시오./x)
그런 다음 [θ + 롤, φ + 피치]를 사용하여 지형 데이터를 샘플링합니다 (정확한 롤 및 피치는 아니지만 충분히 가깝습니다).