소수 z를 실수부와 허수부로 나누어 좌표화한 것
복소좌표의 모든 좌표 c = (a,b)에 대해서 z0 = (x0,y0) = (0,0)을 초기값으로 하여 다음 수식이 발산하지 않는 좌표들을 모은 것으로 위와 같은 그림이 그려지게 된다.
임의의 복소수 c = (a,b)에 대해서 복소좌표의 모든 좌표 z0 = (x0,y0)가 Mandelbrot의 수식에서 발산하지 않는 좌표들을 모은 것이다. Mandelbrot과 비교해보면 그려야하는 복소좌표가 z항인지 c항인지에 따라 달라진다고 할 수 있다. 또한 두 fractol은 모두 원점을 중심으로 하는 반지름 2인 원 안에 그려진다.
-2<=x<=2, -2<=y<=2
의 범위를 가지며 mlx윈도우의 크기를 800*800
이라고 가정했을때 위 그림과 같이 표현 할 수 있다. 즉 가로 800개의 pixel로 좌표상의 -2<=x<=2
를 그려내면 된다.4/800=1/200
의 길이를 나타내게 된다.(0,0)
은 왼쪽 맨 위점임을 알 수 있다. image의 중앙이 (0,0)을 의미하도록 만들기 위해서 각 점마다 가로길이의 절반을 x에, 세로길이의 절반을 y에서 빼주어야한다.(0,1)
이 복소좌표의 (0, 1/200)
과 같게 만들어주는 작업이다. -2<=x<=2, -2<=y<=2
를 (가로길이, 세로길이, center 좌표) = (4,4,(0,0))
의 세가지 정보로 저장한다.(가로길이, 세로길이, center) -> (가로길이/1.5, 세로길이/1.5, center)
로 변화가 발생한다.(L, W, (0,0))
으로 현재 마우스 포인터의 위치는 (m.x, m.y)
로 zoom in, out할 비율을 zoom_rate
로 지정하여 zoom out과정(축소)를 보여주고 있다.(L, W, (0,0)) -> (L*zoom_rate, W*zoom_rate, (-m.x*zoom_rate, ?))
으로 변환한다고 생각하면 된다.(0,0)
이라고 가정하고 있다. 만약 현재 center를 center(c.x, c.y)
라고 가정하면 new_center(c.x - m.x*zoom_rate, c.y - m.y*zoom_rate)
가 된다.new_center(m.x*(1 - 1/zoom_rate), m.y*(1 - 1/zoom_rate))
가 된다.