kyuseo의 게임 프로그래밍

카오스(Chaos)의 만델브로트의 집합(The Mandelbrot Set) 프렉탈(Fractal) 곡선 프로그램 본문

만든 게임 및 프로그램

카오스(Chaos)의 만델브로트의 집합(The Mandelbrot Set) 프렉탈(Fractal) 곡선 프로그램

kyuseo 2008. 2. 24. 17:09

개요..

 

카오스란? 원래 그리스어로 천지 창조의 이전의 혼돈, 무질서, 대혼란의 상태를 의미하지만 학술적으로는 외관상으로는 무질서하고 불규칙적으로 보이지만 내적인 질서와 규칙성을 갖고 있는 현상을 말합니다.

 

로데릭젠슨 교수는 "결정론적인 비선형 계에서 나타나는 불규칙하고 예측 불가능한 현상" 이라고 정의를 내리기도 하였는데 카오스의 대표적인 예로는 대기의 움직임, 복잡한 해류, 심장고동 뇌파, 주가의 변동 무수히 많습니다.

 

요즘은 카오스를 이용한 세탁기, 히터 등 이 이를 응용한 제품들이 많이 출시되고 있습니다.

 

제가 이번에 개발한 프로그램은 카오스(Chaos)의 가장 유명한 "만델브로트의 집합(The Mandelbrot Set):: 가장 잘 알려진 "프렉탈(Fractal)" 을 소프트웨어 프로그래밍하였습니다.

 

참고로 해당 프로그램은 1999년에 개발하였습니다.

 

 

핵심 공식

 

핵심 공식은 다음과 같습니다.

 

Z = Z^2 + C

 

C : 초기값( a + bi ) : 여기서 i는 허수

 

절대값( Z ) < 2 일때 까지 반복

 

(끝이 없을시는 250에서 중단 : 컴퓨터가 좋다면 1만까지 반복 할 수도.)

 

 

핵심 소스

 

핵심 소스는 다음과 같습니다.

 

class CHAOS

{

public:

    double cx, cy;//x실수, y허수: 초기값

    double lx, ly;//x실수, y허수: 나중값

 

public:

    int Calcul( double xx, double yy )

    {

        cx=xx; cy=yy;

        lx = ly = 0;

 

        for( int i=1; i<250; i++ )

        {

            lx = lx*lx - ly*ly + cx; //z^2+c

            ly = lx*ly*2 + cy;

 

            if( abs(lx) > 2 || abs(ly) > 2 ) return i;

        }

        return i;

    }

 

};

 

 

스크린샷