2011-08-26 7 views
0

큐브의 3 차원 상자가 있다고 가정하면 각 큐브에는 (x,y,z)의 3 가지 인덱스가 있고 토지 또는 공기를 나타내는 지 여부를 지정하는 1 개의 추가 특성이 있습니다.알고리즘을 생성하는 3D Hill?

각 큐브가 3d 배열의 요소 인이 큐브 상자를 나타내는 3D 배열이 있다고 가정 해 보겠습니다.

y=0:   
0 0 0 0 0  
0 0 0 0 0 
1 1 1 1 1 
1 1 1 1 1 

y=1: 
0 0 0 0 0 
0 0 0 0 0 
1 0 0 0 1 
1 1 1 1 1 

y=2: 
0 0 0 0 0 
0 0 0 0 0 
1 0 0 0 1 
1 1 1 1 1 

y=3: 
0 0 0 0 0 
0 0 0 0 0 
1 1 1 1 1 
1 1 1 1 1 

f 주파수와 h 평균 높이 언덕을 생성하는 것 인 선택 박스 주어진 알고리즘 같은 의미 :

다음 어레이, 예를 들어 토지의 그릇 형상의 부재를 나타낼 것이다 , v 높이의 평균 변동은?

본딩 박스의 최저 레벨이 "기준선"또는 "해수면"이라고 가정 할 수 있습니다.

function makeTrees(double frequency, int height, double variation) 
{ 
    //return 3d array. 
} 

은 내가 마인 크래프트 MCEdit 필터 플러그인을 쓰고 있어요 : P

답변

2

가장 간단한 방법은 세 부분으로 문제를 분해하는 것입니다

  1. 가 하나의 큐브를 생성하는 루틴을 쓰기 높이 h의 언덕.

  2. 당신의 선택의 난수 생성기를 사용하여, HV와 H + V 사이의 N 높이의 세트를 생성이 간단한 콘함으로써 시작 (당신이 기쁘게 보이는 뭔가를 찾을 때까지 정점 각도로 재생)

  3. 큐브에 n 개의 산을 임의로 배치하십시오. 교차하는지 여부는 중요하지 않습니다. 실제로 더 나은 범위로 이어질 것입니다.

그러나 나는 또한이 방법을 포기하는 게 좋을 것, 단순히 다음을 이산화, 당신의 경계 큐브 내에서 fractal terrain를 생성합니다. 높이와 변이를 묶기 위해 파라메터 생성기에 파라메터를 사용할 수 있습니다.

같은 임계 값 함수를 정의하면 정현파 주파수 f 언덕하고자 가정

1

중심으로부터 반경 r = sqrt(x^2+y^2)의 함수로서 ("빈도"보낸 사람 또는 그보다 wavenumberf는 보통 시간적 양 사용된다) 이 :

enter image description here

모든 요소 (x,y,z)z < z_m와 함께 땅이 될 것이며, 나머지는 공기 될 것입니다.

+1

당신은 당신의 질문에 그렇게 말하지 않지만, 지금 나는 당신이 무작위로 보이는 언덕을 원하는 느낌을받습니다. –

+0

그래, 무작위로 보이는 언덕이 선호됩니다. 내 땅을 자연스럽게 보이게하기 위해 임의의 고도를주고 싶다. –

관련 문제