Регистрация Вход
Город
Город
Город
Stepan-studio.ru

Stepan-studio.ru

Оригинальная музыка к спектаклям и мюзиклам. Качественная звукорежиссура и стильные аранжировки. Напишите: vk.com/stepan_studio или stepka68@gmail.com
Подробнее
TAGREE digital-агентство

TAGREE digital-агентство

Крутые сайты и веб-сервисы. Комплексное продвижение и поддержка проектов. Позвоните: +7-499-350-0730 или напишите нам: hi@tagree.ru.
Подробнее

Биоморфы

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

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

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

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

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

 

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

    В журнале «В мире науки» №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

Поделитесь с друзьями:

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

Про фракталы

 

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

i-не индекс!!! Индекс записывает маленькой цифрой чуть ниже символа переменной. i-мнимая единица, т.е. число, которое при возведении в квадрат дает -1.

Ответить

di5temper

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

Ответить

TYAN

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

Ответить

di5temper

Пасибо за плюсы. Да, пост, скажем так, несколько специфичен.
По-видимому, посвящается тем, кто был способен сидеть за 14-дюймовым монохромным монитором и высунув язык поражаться Паскалю.
А отсутствие большого числа картинок возможно побудит юных компьютероковырятелей поменять строчки 7, 8, 9 и посмотреть, что из этого получится ;)

Ответить

Wavy

ну врядли кто-то будет этот код вставлять куда-то... слишком уж узконаправленный пост. Хоть я и программист, но меня это не впечатлило

Ответить

di5temper

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

Ответить

что-то подобное писали мои студенты в ту пору, когда я преподавал информатику и программирование...

Ответить


di5temper

За плюс спасибо :)
Но через час чтобы ваша подгруппа на паре была!!! 8-)

Ответить

di5temper

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

Ответить

Wavy

паскаль можно любить как такие же древние 14-тидюймовые мониторы, ностальгия, так сказать :)) а если у тебя нет по нему ностальгии, то по собственной воле вряд ли кто-то будет на нем писать :))

Ответить

di5temper

С утра сегодня вот заностальгировалось почему-то :)

Ответить

Smily

Хм...поностальгировать конечно хорошо, но не так давно пришлось в Дельфях поработать, так долго плевался, дико неудобный язык для меня стал)))
Кстати, дома стоят два 14-дюймовых монитора, рабочие))) Кому надо?)))

Ответить

di5temper

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

Ответить

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

Ответить

di5temper

Далеко не все программеры курят.
А вот мания величия есть у многих :)

Ответить

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

Ответить

di5temper

К вам, уважаемая, это ничуть не относится, просьба не обижаться :)
Есть знакомые кадры просто 8-)

Ответить

Я и не думала обижаться))
На обиженных воду возят, правильно я говорю?))
З.Ы.Прога и правда прикольная...
Ща запущу Паскаль, посмотрю, что он мне выдаст в реале))

Ответить

Alionsa

Да, пост прикольный! Я уж совсем не программист, но прочитала, и стала думать о программировании гораздо лучше!
Во всём есть свои прелести!

Ответить

Я на паре тоже не присутствую, но программы я сама пишу)))
Честное пионерское)))Это Ирина все сдувает)))

Ответить

В этом семесте постараюсь "мася")) Но не гарантирую!))

Ответить

Я ведь не просто сдуваю, я еще и разбираюсь. Че ж так сразу(

Ответить

Да, ктати, пост мне очень понравился, мы тут программку эту запускаем)))
С почином)))

Ответить

di5temper

Пасибо. Тронут 8-)
Но что-то мы начинаем флудить...
Предлагаю отписываться в приват :)

Ответить

Слушаемся, товарищ преподаватель)))

Ответить

Слушаемся, товарищ преподаватель)))

Ответить

TYAN

Хрен вам, а не слушаемся, товарищ преподаватель)))

Ответить

TYAN

И вообще, не в приват, а на пару!!! И не отписываться, а учиццо!!!

Ответить

DeLa

попробуем эту программку. Интересно,правда ли такое получится=) Только надо будет другую функцию попробовать

Ответить

di5temper

Картинки могут быть разными, есть почва для экспериментов :)

Ответить

di5temper: а нет чего-нибуть еще про компьютерную графику?

Ответить

di5temper

Ненадолго уезжаю из города, если творческий отпуск будет успешным, то по приезду еще чего-нибудь накалякаю 8-)

Ответить

 
Автор статьи запретил комментирование незарегистрированными пользователями. Пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте, чтобы иметь возможность комментировать.