Биоморфы

Bio.gif

Построить фрактал биоморф.

Биоморфы строятся простейшим алгоритмом многократного возведения в квадрат комплексного числа. Каждому комплексному числу соответствует точка на плоскости. Поэтому каждый раз при возведении в квадрат получаются новые комплексные числа, а соответственно и новые точки. Далее возможны три варианта : комплексное число резко растёт, резко уменьшается и третий - числа начинают группироваться вокруг некоторой области (Первые два вариант не интересны, т.к рано или поздно мы перестаем наблюдать изображение) Клиффорд Пикоувер первым заметил схожесть этих группировок с микроорганизмами и дал им упомянутое выше название.
Рассмотрим пример построение биоморфа. Он получен с помощью итерационных вычислений по формуле Zn+1=Z^9n+C. Затем те же арифметические действия применяются к сумме Z1, получается значение Z2 и т.д. Комплексное число состоит из двух чисел, одно называется действительной, а другое - мнимой частью комплексного числа. Эти два числа удобно представить в виде двух координат в декартовой системе.
Описывается процедура KUB - возведение комплексного числа в куб. Комплексное число хранится двумя переменными: RE - действительная часть, IM - мнимая. Программа пробегает все точки экрана, для каждой определяется комплексное число с помощью подобранных коэффициентов в строках 3 и 4, меняя эти коэффициенты можно получать разные конфигурации. В строке 4 экран заливается белым фоном. В строке 5 число возводится в девятую степень, так как процедура KUB вызывается два раза подряд. В строках 6 и 7 к полученному числу добавляется постоянное комплексное число также влияющее на вид биоморфа.
Из итерационного цикла предусмотрены два выхода - по значению RE и IM в строках 8 и 9 - влияют на вид и цвет внутренней полости биоморфа. В строке 11 тоже две проверки - RE и IM и их значения влияют на толщину внешних колючек. Координаты , в которых ничего числами не происходит, снова получают пиксель белого цвета в строке 13.

PROGRAM Biomorphi;
USES CRT,GRAPH,DOS;
LABEL 1;
VAR RE,IM,RE1,IM1: REAL ;
V,X,Y, gd, gm : INTEGER;
C: STRING;
PROCEDURE KUB ; {1}
BEGIN
   RE1:=RE*(RE*RE-3*IM*IM) ;
   IM1:=IM*(3*RE*RE-IM*IM) ; RE:=RE1 ; IM:=IM1 ; 
END ;
BEGIN
 
gd:=Detect;
  InitGraph(gd, gm, 'd:\bp\bgi');
BAR(0,0,640,480) ; {2}
X:=-320 ; 
REPEAT 
  Y:=-240 ; 
   REPEAT 
        V:=0 ;
         RE:=-1+0.008*X ; {3}
          IM:=0+0.008*Y ; {4}
          REPEAT KUB ;
          KUB ; {5}
          RE:=RE-0.9 ; {6}
          IM:=IM+0.18 ; {7}
          IF RE*RE > 5 THEN GOTO 1 ; {8}
          IF IM*IM > 6 THEN GOTO 1; {9}
          V:=V+1 ;
       UNTIL V > 10 ; {10}
       1:    IF ( ABS(RE) < 7 ) OR (ABS(IM) < 3 ) THEN {11}
           PUTPIXEL((X+220),(Y+240),V)              {12}
        ELSE
           PUTPIXEL((X+220),(Y+240),15) ;           {13}
       Y:=Y+1 ;
     UNTIL Y > 241 ;
     X:=X+1 ;
   UNTIL X > 420 ;
C:=READKEY ;
CLOSEGRAPH;
END.

Ключевые слова: 
Биоморфы, комплексное число, возведение в степень, итерация
ВложениеРазмер
BIOMORPH.rar14.59 кб