Город

Биоморфы




Иногда я кажусь себе рыбаком.

Компьютерные программы и идеи -

это мои крючки, удилища и спиннинги.

Компьютерные изображения - улов и

деликатесные блюда.

 

Клиффорд А. Пикоувер.

    В журнале «В мире науки» №9/1989г. рассказано о причудливых и красивых графических творениях К. Пикоувера, известного учёного из Исследовательского центра им. Томаса Уотсона фирмы IBM в Йорктаун-Хейтсе (штат Нью-Йорк). Помимо увлечения серьёзными исследованиями он коллекционирует развлекательные программы. Это его «рыболовные снасти». С их помощью на экране дисплея можно получать хаотичные и в то же время эстетически привлекательные формы. Глядя на восхитительные уловы Пикоувера, я не в состоянии противостоять соблазну - рассказать о программах, с которыми читатели смогут отправиться на «рыбалку» и ловить представителей трёх простых, но весьма забавных видов, а именно биоморфы, плитки Трюше и фрактальный попкорн. (Попкорн - потому что узор похож на кукурузные хлопья).
   Что такое биоморфы? Это слово означает нечто похожее на живой организм. Биоморфы Пикоувера похожи на микробов, в связи с чем в журнале «Omni» Пикоувер был назван «Левенгуком ХХ века
». (Антони ван Левенгук, живший в XVII в. нидерландский натуралист, первым соорудивший микроскоп и увидевший в капле воды живые существа). Каждый, кто смотрел в микроскоп, видел подобную картину: все живые и растительные ткани построены из клеток, имеющих оболочку, ядро, протоплазму и вакуоли - внутренние органы. Поэтому, увидев на экране дисплея результат работы программы, невольно вскрикнешь: «Да это же живая клетка!». Биоморфы Пикоувера населяют комплексную плоскость. Каждый биоморф строится путём многочисленных итераций, или последовательных вычислений определённой математической функции, путём повторяющихся математических операций. На каждом шаге итерационного процесса результат предыдущего шага принимается за исходное значение переменной.
       Рассмотрим, например, биоморф на картинке.

 Он получен с помощью итерационных вычислений по формуле Zn+1=Z9n+C.(9-степень) Исходное значение комплексной переменной возводится в девятую степень и к результату прибавляется фиксированное комплексное число С. Затем те же арифметические действия применяются к сумме Z1, получается значение Z2 и т.д. Комплексное число состоит из двух обычных чисел, одно из которых называется действительной, а другое мнимой частью комплексного числа. Эти два числа удобно представить в виде двух координат в декартовой системе. Традиционно комплексное число записывается в виде суммы, например 3 + 5i, где 3 - действительная часть, а 5 - мнимая. (Буква i является своеобразным индексом, указывающим, какая из двух частей числа мнимая, причём i2=-1).
    Приведём основные правила арифметики комплексных чисел:
(a + bi) + (c + di) = (a + c) + (b + d)i
(a + bi) * (c + di) = (ac - bd) + (ad + bc)i
(a + bi)2 = (a2 - b2) + 2abi
(a + bi)3 = a(a2 - 3b2) + b(3a2 - b2)i
    Приводим текст программы на Turbo Pascal’е, рисующей на экране приведённый на картинке биоморф:

PROGRAM BIO_3;
USES CRT,GRAPH,DOS;
LABEL 1;
VAR RE,IM,RE1,IM1: REAL ;
V,X,Y : INTEGER;
C: STRING;
procedure GrInit;
var GraphDriver :
Integer; GraphMode :
Integer; ErrorCode :
Integer; begin GraphDriver:= Detect;
InitGraph(GraphDriver,GraphMode,''); ErrorCode:=GraphResult; if ErrorCode <> grOk then begin Writeln('ОШИБКА ГРАФИКИ’,
GraphErrorMsg(ErrorCode)); Writeln('ПРОГРАММА ОСТАНОВЛЕНА.');
Halt (1) end {if} end;
PROCEDURE QWA ; {1}
BEGIN
    RE1:=RE*RE-IM*IM ;
    IM1:=2*RE*IM ;
    RE:=RE1 ;
    IM:=IM1 ;
END ;
PROCEDURE KUB ; {2}
BEGIN
   RE1:=RE*(RE*RE-3*IM*IM) ;
   IM1:=IM*(3*RE*RE-IM*IM) ; RE:=RE1 ; IM:=IM1 ;
END ;
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
BEGIN
GRINIT; SETFILLSTYLE(1,WHITE) ; {3}
BAR(0,0,640,480) ; {4}
X:=-320 ;
REPEAT
  Y:=-240 ;
   REPEAT
        V:=0 ;
         RE:=-1+0.008*X ; {5}
          IM:=0+0.008*Y ; {6}
          REPEAT KUB ;
          KUB ; {7}
          RE:=RE-0.9 ; {8} 
          IM:=IM+0.18 ; {9}
          IF RE*RE > 5 THEN GOTO 1 ; {10}
          IF IM*IM > 6 THEN GOTO 1; {11}
          V:=V+1 ;
       UNTIL V > 10 ; {12}
       1:    IF ( ABS(RE) < 7 ) OR (ABS(IM) < 3 ) THEN   
           PUTPIXEL((X+220),(Y+240),V)              {14}
        ELSE
           PUTPIXEL((X+220),(Y+240),15) ;           {15}
       Y:=Y+1 ;
     UNTIL Y > 241 ;
     X:=X+1 ;
   UNTIL X > 420 ;
C:=READKEY ;
CLOSEGRAPH;
END.
   Предварительно описаны две процедуры: QWA- возведение комплексного числа в квадрат и KUB - возведение комплексного числа в куб. Процедура QWA в приведённой программе не применяется, но понадобится для других биоморфов, где используется чётная степень комплексных чисел. Комплексное число хранится двумя переменными: RE - действительная часть, IM - мнимая. Программа пробегает все точки экрана, для каждой точки определяется комплексное число с помощью подобранных коэффициентов в строках 5 и 6, меняя эти коэффициенты можно получать разные конфигурации. В строках 3 и 4 экран предварительно заливается белым фоном. В строке 7 число возводится в девятую степень, так как процедура KUB вызывается два раза подряд. В строках 8 и 9 к полученному числу добавляется постоянное комплексное число (действительная часть к действительной, мнимая к мнимой) также влияющее на вид биоморфа. Из итерационного цикла предусмотрены два «досрочных» выхода - по значению RE и IM в строках 10 и 11, причём эти значения влияют на вид и цвет внутренней полости биоморфа. В строке 13 тоже две проверки - RE и IM и их значения влияют на толщину внешних колючек, причём каждый на свои. Координаты , в которых ничего “интересного” с числами не происходит, снова получают пиксель белого цвета в строке 15. Как посмотреть в микроскоп Пикоувера на другие организмы? На самом деле это можно сделать с помощью этой же программы. Нужно лишь подставить другую формулу в сердцевину алгоритма, поменять операцию в строке 7 и параметры в строках 8,9,10 и 11.
    Пикоувер впервые столкнулся с биоморфами, когда совершил случайную ошибку в программе, предназначенной для изучения фрактальных свойств различных формул. Но биоморфы, кажется, зажили своей собственной жизнью. Как говорит Пикоувер: «В некотором смысле можно сказать, что математические создания существуют. Эти объекты обитают на комплексной плоскости, хотя и напоминают микроскопические организмы, которые мы легко можем увидеть в капле воды из любой лужи». В каком же море мы могли бы поймать представителей более развитых форм жизни? Пикоувер считает важным и тот факт, что сложность как естественных, так и искусственных организмов является результатом многократного применения простых динамических правил. А что, если мы на пути к разгадке появления жизни на Земле? Может быть миллиард лет назад в «первичном бульоне» молекулы сложных углеводов причудливо соединялись по законам, схожим с законом «жизни» комплексных чисел? Теперь очередь за математиками и программистами - получить устойчивые, движущиеся, приспосабливающиеся и, наконец, разумные биоморфы, научиться общаться с ними, попросить их (не заставить!) работать для людей.


Источник: http://www.arbuz.narod.ru/z_biom1.htm

Смотрите также:

Про фракталы

 

Комментарии:

Магон 21 марта 2008 г. 10:06 #
i-не индекс!!! Индекс записывает маленькой цифрой чуть ниже символа переменной. i-мнимая единица, т.е. число, которое при возведении в квадрат дает -1.
{Ответить}

di5temper di5temper 21 марта 2008 г. 10:08 #
СВОЕОБРАЗНЫМ индексом.
Статья написана максимально популярно, чтобы даже люди далекие от математики могли попытаться понять, что к чему :)
{Ответить}
 

5 баллов TYAN TYAN 21 марта 2008 г. 10:59 #
Ого! di5temper-таки решился дебютировать? =) Неплохо было бы привести здесь побольше картинок биоморф. Кроме того, стоит отметить специфичность поста - наличие в нем текста программы (!). Пусть хоть и не сложной, но тем не менее, это делает пост достаточно узкоспециализированным и трудным для понимания людьми далекими от программирования...
.
С почином! +1 ;)
{Ответить}
 

5 баллов di5temper di5temper 21 марта 2008 г. 11:10 #
Пасибо за плюсы. Да, пост, скажем так, несколько специфичен.
По-видимому, посвящается тем, кто был способен сидеть за 14-дюймовым монохромным монитором и высунув язык поражаться Паскалю.
А отсутствие большого числа картинок возможно побудит юных компьютероковырятелей поменять строчки 7, 8, 9 и посмотреть, что из этого получится ;)
{Ответить}
 

1 балл Wavy Wavy 21 марта 2008 г. 15:03 #
ну врядли кто-то будет этот код вставлять куда-то... слишком уж узконаправленный пост. Хоть я и программист, но меня это не впечатлило
{Ответить}
 

di5temper di5temper 21 марта 2008 г. 16:48 #
Хм, сейчас подумал и понял, что программерам пост будет неинтересен - есть куда более прикольные вещи, а менее искушенных пользователей возможно будет ломать что-то с этим делать :)
Причина его (поста) появления - прочтение статьи о фракталах. Вспомнил, что когда-то ковырял эту прогу - и вот она здесь :)
{Ответить}
 

Alex098 Alex098 21 марта 2008 г. 16:02 #
что-то подобное писали мои студенты в ту пору, когда я преподавал информатику и программирование...

{Ответить}
 

Irinka 21 марта 2008 г. 17:30 #
Без слов. +1 =)
{Ответить}

4 балла di5temper di5temper 21 марта 2008 г. 17:32 #
За плюс спасибо :)
Но через час чтобы ваша подгруппа на паре была!!! 8-)
{Ответить}
 

di5temper di5temper 21 марта 2008 г. 17:39 #
Хм, возвращаясь к вопросу целевой аудитории - думаю, что это некоторые студенты. Может, глянув на картинки, они полюбят Паскаль... И даже начнут САМИ на нем писать программки. И даже зачет получат все в этом случае :)
{Ответить}
 

Wavy Wavy 21 марта 2008 г. 17:51 #
паскаль можно любить как такие же древние 14-тидюймовые мониторы, ностальгия, так сказать :)) а если у тебя нет по нему ностальгии, то по собственной воле вряд ли кто-то будет на нем писать :))
{Ответить}
 

di5temper di5temper 21 марта 2008 г. 17:54 #
С утра сегодня вот заностальгировалось почему-то :)
{Ответить}
 

Smily Smily 21 марта 2008 г. 18:02 #
Хм...поностальгировать конечно хорошо, но не так давно пришлось в Дельфях поработать, так долго плевался, дико неудобный язык для меня стал)))
Кстати, дома стоят два 14-дюймовых монитора, рабочие))) Кому надо?)))
{Ответить}
 

1 балл di5temper di5temper 21 марта 2008 г. 18:52 #
Я никого не призываю программировать на чем-либо. Самому как-то раз пришлось поплеваться от Object Pascal'я.
Но ТРУБО Паскаль, консолька - это у меня ассоциируется с той картинкой, где мышь сидит на компьютерной мыши а-ля чоппер и подпись "Born to be wild". Р-р-р-романтика! 8-)
{Ответить}
 

JOE 21 марта 2008 г. 17:49 #
"Может быть миллиард лет назад в «первичном бульоне» молекулы сложных углеводов причудливо соединялись по законам, схожим с законом «жизни» комплексных чисел? Теперь очередь за математиками и программистами - получить устойчивые, движущиеся, приспосабливающиеся и, наконец, разумные биоморфы, научиться общаться с ними, попросить их (не заставить!) работать для людей."
Господь, в совершенстве знающий математику комплексных чисел - это что то))) Лучше бы он сразу придумал PDP-11, проблем бы меньше было. Не мечтали бы тогда накуренные программеры о своём мировом господстве)))

{Ответить}

1 балл di5temper di5temper 21 марта 2008 г. 18:00 #
Далеко не все программеры курят.
А вот мания величия есть у многих :)
{Ответить}
 

Irinka 21 марта 2008 г. 18:25 #
"А вот мания величия есть у многих :)"
Уважаемый препод, это вы на что намекаете? О_о
Кстати в понед я была, о том , что пара будет, народ осведомлен.
З.Ы. С меня взятки - гладки))
{Ответить}

di5temper di5temper 21 марта 2008 г. 18:40 #
К вам, уважаемая, это ничуть не относится, просьба не обижаться :)
Есть знакомые кадры просто 8-)
{Ответить}
 

Irinka 21 марта 2008 г. 18:49 #
Я и не думала обижаться))
На обиженных воду возят, правильно я говорю?))
З.Ы.Прога и правда прикольная...
Ща запущу Паскаль, посмотрю, что он мне выдаст в реале))
{Ответить}

Alionsa Alionsa 21 марта 2008 г. 18:24 #
Да, пост прикольный! Я уж совсем не программист, но прочитала, и стала думать о программировании гораздо лучше!
Во всём есть свои прелести!
{Ответить}
 

Ksu 21 марта 2008 г. 18:56 #
Я на паре тоже не присутствую, но программы я сама пишу)))
Честное пионерское)))Это Ирина все сдувает)))
{Ответить}

Irinka 21 марта 2008 г. 19:08 #
В этом семесте постараюсь "мася")) Но не гарантирую!))
{Ответить}

Irinka 21 марта 2008 г. 19:10 #
Я ведь не просто сдуваю, я еще и разбираюсь. Че ж так сразу(
{Ответить}

Ksu 21 марта 2008 г. 18:57 #
Да, ктати, пост мне очень понравился, мы тут программку эту запускаем)))
С почином)))
{Ответить}

di5temper di5temper 21 марта 2008 г. 19:06 #
Пасибо. Тронут 8-)
Но что-то мы начинаем флудить...
Предлагаю отписываться в приват :)
{Ответить}
 

1 балл Irinka 21 марта 2008 г. 19:23 #
Слушаемся, товарищ преподаватель)))
{Ответить}

1 балл Ksu 21 марта 2008 г. 19:23 #
Слушаемся, товарищ преподаватель)))
{Ответить}

1 балл TYAN TYAN 21 марта 2008 г. 20:01 #
Хрен вам, а не слушаемся, товарищ преподаватель)))
{Ответить}
 

TYAN TYAN 21 марта 2008 г. 20:12 #
И вообще, не в приват, а на пару!!! И не отписываться, а учиццо!!!
{Ответить}
 

DeLa DeLa 21 марта 2008 г. 22:25 #
попробуем эту программку. Интересно,правда ли такое получится=) Только надо будет другую функцию попробовать
{Ответить}
 

di5temper di5temper 21 марта 2008 г. 22:32 #
Картинки могут быть разными, есть почва для экспериментов :)
{Ответить}
 

Магон 22 марта 2008 г. 00:28 #
di5temper: а нет чего-нибуть еще про компьютерную графику?
{Ответить}

di5temper di5temper 22 марта 2008 г. 15:20 #
Ненадолго уезжаю из города, если творческий отпуск будет успешным, то по приезду еще чего-нибудь накалякаю 8-)
{Ответить}
 

 
 



image code

— скажите волшебное слово (или пропишитесь на Городе)

24

июня 2008

  В Томске

05:59

Облачно

12°С

   

Авторы

ღstregaღ -=JuliART=-® 13 22_Kilometr Agent Smith Aleksander Alex Alex098 Alexxxey AlfX Alibaba Alinia andre Annet Asa Asd Atlas AutumnMan Avtor BankRat Bastet Belstar Caracupa cave Celios cooker Danilko Dark_Night ded Dimas DimON Dim_ docha Doll-Perian DP Drz duke eagle Elias Elle ElMiNa EVA g578 Gandg HaN Hanter hi_ homoludes IndLife INGO InoJ ip027 Irisha jade_tongue Jareg jasper096 jgun Johan john silver Jonny_30 juja JuliART® Kalambur Katya Keti knyaz kofe KOT kovivi Kuzia LapTop Lenka Logan Lynx MADI Maestro magway makc-barmaley maldalik MAlu Malvado Maxar mazay MaZайка Medivh mich70 milagros Milena milk mir Mirage Mit5x Mo/loC Mollari Molniy mr.Fegin Mr.Tod MultiPROSHKA Myst Narn Nbo Tuabe Ni Nicolete Nimeria Nirs Noxwell Oksana Oladyshka Panda22 Pantarei POL Ponchik Puzzen Qsaz Ragnar Konung Rash Sakhalin Samka saveliy Sayer sazon Scorpion Scythian SDM Sephiroth Serge SlavaVG SSergey stalin-81 Stella sui_generis targetay Toppinen TYAN urgen USSR V Valek Vilka Vipi Vl vovkach Walentai xenon ychenik Zorba Аграфена Алёнка Алисон Алма Анастасия Андрюха® Антоха Анюта) Артём Бегущий Кролик Белк Борис Осипов Борман Брендон Вайс Вероника Герда Гого Гюнтер Диоген Дмитрий Дмитрий К. Добрый волшебник Елена Елеонора Елеонора ЕНОТ_Полоскун Злойкаксобака Ильича репа Карамелька Котейка кот_с_ушками Кузя ЛuceNok летучая мышь-убийца Лёха Любим Коптяев Макензи МаргоВАнглии МатвеевнА Механик Мотильда Ната не от мира Незнайка Немецкая овчарка Николаич Патамушта Перворожденная Птичка Пятниццa Рина Роксолана Россиянин Рысь Сабжер Сайрус Смит Сам-по-себе Сатч Сволочъ Сергей_ Сестренка Симпампулька София Странник Таша тетя Марина Тушка/нчик УтR() Хрюша Чарли шумахер Юлька Юля |{апрал


Лагуна

Финам-Томск
Хет-Трик