AllGoMath

프랙탈 Fractal

Mandelbrot · Julia · Burning Ship 집합의 이스케이프 타임 렌더링.

만델브로, 줄리아, 버닝십 집합을 브라우저에서 직접 렌더링합니다. 드래그와 스크롤로 깊이 확대하며 반복 횟수와 색 팔레트를 바꿔 경계의 세부를 관찰합니다.

이스케이프 타임 프랙탈은 복소평면의 각 점 c에서 z -> z^2 + c 를 반복해 발산 여부와 속도를 측정하고, 그 속도로 색을 칠한다. 집합의 경계는 한없이 들쭉날쭉해 아무리 확대해도 새로운 세부가 나타난다. 만델브로는 c를 평면 위에서 훑으며 z0=0에서 시작하고, 줄리아는 c를 고정한 채 시작점 z0를 평면으로 삼는다. Burning Ship은 각 반복에서 실수부와 허수부의 절댓값을 취해 독특한 배 모양의 프랙탈을 만든다.

시간복잡도 O(W * H * maxIter)

z_{n+1} = z_n^2 + c

응용

해안선 길이 문제

해안선은 자를 짧게 잡을수록 측정 길이가 늘어난다. 확대할수록 새로운 굴곡이 계속 나타나는 프랙탈 구조이기 때문이다. 망델브로 집합의 경계에서 같은 성질을 관찰할 수 있다.

절차적 생성

게임의 지형, 구름, 행성 텍스처는 자산을 그리는 대신 수식으로 생성한다. z² + c 반복 한 줄이 만들어내는 복잡도가 절차적 생성의 원형이다.

망델브로와 줄리아의 대응

망델브로 집합의 각 점 c는 줄리아 집합 하나에 대응한다. c가 집합 내부이면 해당 줄리아 집합은 연결되어 있고, 외부이면 먼지처럼 흩어진다.