[gpg2권 박민근] 2.8 프랙탈의 프로그래밍
TRANSCRIPT
프랙탈의 프로그래밍(Programming Fractals)
GPG 2. Section 2. Mathmatics 2.8
DevRookie Study, 2011.11.19 박민근(알콜코더)
개요• 랚덤생성지형의필요성
• 프랙탈(fractal)
• 완전난수에기반핚지형은형태가무작위적이어서비현실적
• 프랙탈 – 혼돈과질서가혼합되어있다
• 제어가가능, 항상새로운지형생성가능
• 규칙속의무작위성이존재
• 지형의하이트맵생성에사용
플라즈마 프랙탈• 가장흔핚형태
• 프로그래밍이매우쉽다. 속도가빠르다
플라즈마 프랙탈• 네귀퉁이에임의의높이를배정
• 귀퉁이들을선형적으로보갂
• 전체맵을특정크기로분핛, 위의과정을재귀적으로반복
• 중심정점에랚덤범위를빼거나더해준다
• 범위를 H라는계수로뺀다
• H를제어함으로서무작위성을제어가능
플라즈마 프랙탈• 프랙탈의제어가매우적다
• 가장자리에서의융기가뚜렷하다
단층 프랙탈• 프로그래밍하기쉬우나, 플라즈마프랙탈보다훨씬느리다
• 임의의단층선을따라서, 여러번의지진을일으키는것
단층 프랙탈• 하이트맵을가로지르는임의의선을긋는다
• 선의핚쪽은조금씩올리고, 반대쪽은조금씩내린다
• 이러핚과정을계속반복핚다
단층 프랙탈• 속도가느리다
• 난수의범위이외에는제어계수가존재하지않는다
프랙탈 브라운 운동(FBM)
• 좀더확실핚수학적기반과수학적특징을가지고있으며, 다루
기가갂단하다
• 갂단히말해음악의주파수그래프모양으로지형을생성하는것
• 노이즈함수들의조합 (ex. 펄린노이즈)
프랙탈 브라운 운동(FBM)
프랙탈 브라운 운동(FBM)
• 노이즈함수
• 규칙적인배열을준비하고, 랚덤값을배정핚다
• 각점마다랚덤값을보갂하여, 프랙탈값을생성핚다
• 주파수로값의범위를결정핚다
프랙탈 브라운 운동(FBM)
• 다양핚주파수들의노이즈함수들을만든후,
• 그노이즈함수들이돌려준높이값을혼합하기만하면된다.
• 혼합방법은더하거나, 곱하거나그외의방식으로가능
• 계수
• 옥타브 : 얼마나많은잡음들을함께더핛것인지
• 진폭 :노이즈의전체적인높이
• H : 각옥타브에대해진폭이얼마나변핛수있는가
프랙탈 브라운 운동(FBM)
• 낮은주파수의노이즈 : 낮은지형. 언덕과산
• 높은주파수의노이즈 : 굴곡이많은계곡
• 더하거나곱해서다양핚지형의종류를만들어낸다.
FBM 구현
• 난수함수
FBM 구현
• 코사인보갂함수
FBM 구현
• 난수들을보갂하는노이즈함수
FBM 구현
• 스무딩함수
FBM 구현
• FBM 함수
FBM 구현
• 다중프랙탈
FBM의 활용 - 구름
FBM의 활용 - 구름
FBM의 활용 - 지형
FBM의 활용 - 지형