원이 없는 Perlin Noise Islands
그라디언트 원을 사용하는 대신 Diamond & Square 알고리즘을 약간 수정하여 활용하여 자연스러운 모습을 만드는 것을 고려해 보세요. 지도 생성기 내의 섬.
다이아몬드 및 정사각형 알고리즘 수정
지형 높이 맵 생성 (zed[][]):
표면 지도 생성(typ[][]):
예 C 구현
void map_random(int _xs, int _ys) { // Configuration and parameter initialization // Terrain generation ter=new int*[mys+1]; for (y=0;y<=mys;y++) ter[y]=new int[mxs+1]; typ=new int*[mys+1]; for (y=0;y<=mys;y++) typ[y]=new int[mxs+1]; ... // First pass t=-r2; ter[ 0][ 0]=t; ter[ 0][mxs]=t; ter[mys][ 0]=t; ter[mys][mxs]=t; ter[dy2][dx2]=r2; ... for (;dx2|dy2;dx=dx2,dx2>>=1,dy=dy2,dy2>>=1) // subdivide step until full image is filled { ... // diamond (skip first one for islands) if ((!_island)||(dx!=mxs)) for (y=dy2,yy=mys-dy2;y<=yy;y+=dy) for (x=dx2,xx=mxs-dx2;x<=xx;x+=dx) ter[y][x]=((ter[y-dy2][x-dx2]+ter[y-dy2][x+dx2]+ter[y+dy2][x-dx2]+ter[y+dy2][x+dx2])>>2)+Random(r)-r2; ... // adjust border if (_island) { for (y=0;y<=mys;y+=dy2) { ter[y][0]=t; ter[y][mxs]=t; } for (x=0;x<=mxs;x+=dx2) { ter[0][x]=t; ter[mys][x]=t; } } } // Additional steps and enhancements ... }
생산량
이러한 접근 방식은 여러 개의 언덕과 사실적인 해안선을 갖춘 보다 자연스러워 보이는 섬을 생성합니다.
위 내용은 수정된 다이아몬드-제곱 알고리즘을 사용하여 현실적인 섬을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!