내보내기(0) 인쇄
모두 확장

화면 좌표를 복소 평면에 매핑

캔버스를 사용한 Mandelbrot 집합의 초기 렌더링에서 제공한 정보를 기반으로 여기서는 화면 좌표를 복소 평면에 매핑하는 방법을 살펴봅니다.

다음의 빨간색 반투명 직사각형에 제안된 대로 Mandelbrot 1에는 확대/축소를 통해 Mandelbrot 집합의 흥미로운 영역을 표시할 수 없는 점 등 많은 문제점이 있습니다.

확대/축소 상자가 표시된 Mandelbrot 탐색기 스크린샷

여기서 클릭하여 끌기 작업으로 만든 빨간색 반투명 직사각형은 Mandelbrot 집합에서 확대할 영역을 나타냅니다. 즉, 직사각형의 왼쪽 위와 오른쪽 아래 모서리는 "확대/축소 상자"를 정의합니다. 이제 Mandelbrot 집합의 해당 영역을 그려서 Mandelbrot 집합을 "확대"하려면 확대/축소 상자의 왼쪽 위와 오른쪽 아래 모서리에 대한 캔버스 좌표계의 점을 복소 평면 좌표계의 유사한 점으로 변환해야 합니다.

캔버스 좌표계(빨간색)의 점을 복소 평면 좌표계(녹색)로 변환하려면 모든 좌표 변환이 비례한다고 가정합니다.

복소 평면 좌표계 위에 겹쳐진 캔버스 좌표계

즉, 다음과 같습니다.

비례 방정식 1(1)

마찬가지로 다음과 같은 방정식도 사용합니다.

비례 방정식 2(2)

다음과 같은 방정식도 사용합니다.

비례 방정식 3(3)

x’y’에 대해 (2)와 (3)을 해결하면 필요한 변환 방정식이 생성됩니다.

비례 방정식 결과

x’y’는 ReMax, ReMin, ImMax 및 ImMin에 따라 달라지므로 렌더링된 Mandelbrot 이미지가 x 또는 y 방향으로 기울지 않도록 이러한 값을 선택해야 합니다. 즉, (1)을 해결하여 복소 평면 극값 중 하나인 ReMax를 다른 세 값의 함수로 확인합니다. 그러면 복소 평면의 비례가 보장됩니다. 예를 들면 다음과 같습니다.

핵심 비례 방정식

따라서 캔버스 좌표계에서 점 (x, y)가 주어지면 아래에 표시된 대로 위의 변환 방정식을 사용하여 복소 평면에서 유사한 일치 점 (x’, y')를 계산할 수 있습니다.

복소 평면 좌표계 위에 겹쳐진 캔버스 좌표계

이 예에서는 다음과 같이 계산됩니다.

이전 이미지에서 사용된 상수

따라서 좌표 변환 방정식은 다음과 같습니다.

이전 상수에 따라 해결된 좌표 변환 방정식

따라서 위의 캔버스 좌표계 점 (30, 20)은 복소 평면 좌표계에서 (-1.3, 0.4)가 됩니다.

(x, y)가 주어진 (x', y')를 계산하려면 x 및 y에 대한 변환 방정식을 해결하면 됩니다.

간소화된 변환 방정식

예를 들어 복소 평면 점 (1.1, -1.2)는 예상대로 캔버스의 점 (90, 60)에 발생합니다.

참고  위의 좌표 변환 방정식을 생성하는 다른 방법은 2D 좌표계 간에 점을 매핑하는 방법을 참조하세요.

이제 캔버스 점을 복소 평면 점으로 매핑하는 방법을 확인했으므로 확대/축소 상자를 구현하는 방법을 살펴볼 수 있습니다. 그러나 확대/축소 상자 구현을 간단하게 하려면 먼저 확대/축소 상자 구현 간소화에 설명된 대로 Mandelbrot 1을 다시 작성해야 합니다.

관련 항목

확대/축소 상자 구현 간소화
2D 좌표계 간에 점을 매핑하는 방법

 

 

표시:
© 2015 Microsoft