Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   морозный узор (http://www.flasher.ru/forum/showthread.php?t=83362)

EGO* 02.08.2006 19:28

морозный узор
 
как программно можно сделать постоянно растущие веточки мороза на стекле, которые могут в процессе роста накладываться друг на друга?

D12 03.08.2006 00:51

Вложений: 1
Подскажу идею , а дальше сам =)

Пример Sergwizarda :

xintrea 03.08.2006 01:58

Одно время в фидошной эхе DEMO.DESIGN пролетала сцыла что в SU.GRAPHICS идет обсуждение создания морозного узора. Вот пример в псевдокоде, получишь именно растущий узор. Обрати внимание, что используются комплексные числа, это обычная вещь для фракталов. Т.е. функция Re() - взятие реальной части, Im() - взятие мнимой части. Ты можешь сам представлять комплексное число как класс или еще проще - вообще как две переменных.


- [91] Computer Graphics (2:5030/84) ----------------------------- SU.GRAPHICS -
Msg : 13 of 14
From : Khrolenko Pavel 2:5045/21.9 25 Apr 96 20:43:00
To : All
Subj : Морозные узоры
--------------------------------------------------------------------------------
Hi All!

Тута многие просили всяческие алгоритмы строящие фрактальные объекты.
Вот представляю вашему вниманию алгоритм рисующий биоморф ( так по мойму
это называется ).
Разбираться в нем времени не было ( сессия на носу ), так что я его просто
передрал из тетради. Hадеюсь пинать не будете. :)

Z - комплексное число
|| - здесь мдодуль

Код:

C = 0.5 + i0.0  // C - должно быть не большое
 for j = 1 to 100
  for k = 1 to 100
    // Вычисляем Z0 - центр квадрата в пределах которого мы строим
    // Re(Z0) = -1.5 + 0.03j  - например таким образом
    // Im(Z0) = -1.5 + 0.03k
    Z = Z0
    for n = 1 to 10
      Z = Z^3 + C  //  - рабочая формула

      if( Re(Z) > 10 or Im(Z) > 10 or |Z| > 10 )
  // то выйти из цыкла по n
    next

    if( |Re(Z)| < 10 or |Im(Z)| < 10 )
      // построить Plot( j, k ) черным цветом
    else
      // построить Plot( j, k ) белым цветом
  next
 next

// а место рабочей формулы можно подставлять след-ие формулы :
1) sin(Z) + Z^2 + C;
2) sin(Z) + e^Z + C;
3) Z^Z + Z^6 + C.

Литература по фракталам :
1) Смирнов Б.М. "Физика фрактальных кластеров"
* 2) "Фракталы в физике" Под редакцией Л.Пьетронеро и Э.Тозатти
( Труды 4 международного симпозиума по фракталам в физике ).

К слову : ежели кому очень нужна исчерпывающаа инф-ия по фракталам, то
известно что в RealCom-е есть эха посвященная этим делам.


ЗЫЖ Еще зайди по этой сцылке http://www.prodtp.ru/index.php?&act=ST&f=67&t=6931, там есть несколько формул для фракталов и соответствующие картинки, есть морозный узор. Если он не нравится (кажется "разрозненным"), можно делать несколько слоев с разными оттенками белый-голубой, будет вааще как настоящий.

EGO* 03.08.2006 14:34

Вложений: 1
с формулами сложновато,
пока не получается ничего...
а вот чего получается с примером D12

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

iNils 03.08.2006 16:13

Вложений: 1
Такие узоры строят с помощью фракталов, но мне сейчас лень было разбираться :), поэтому накидал так.

EGO* 03.08.2006 16:33

блин, красиво...
спасибо iNils , буду разбираться

xintrea 04.08.2006 14:00

Вложений: 1
Вот держи фрактальный морозный узор из 4096 снежинок по описанному выше алгоритму. Так как снежинок много, узор строится медленно, примерно 8-10 сек на Cel1500, FlashPlayer7. Поэтому при запуске swf на просмотр, может выдваваться сообщение типа

"Эта чоза? Актионскрипт чота долга щитает. Наверна завис. Остановить это дело?"

Надо ответить "Нет", фрактал досчитается, и будешь лицезреть красивую картинку.

Если тебе нужно видеть как фрактал растет, раскидывай цикл на пару кадров.

EGO* 08.08.2006 12:53

Вложений: 1
все пытаюсь доделать морозный узор,
фракталами тормозит,
сделал совсем по другому,
с картинкой,
но все равно тоже получается тяжело очень,
(в двух архивах пришлось выложить)
когда перевожу в скринсейвер тоже тормозит,

может есть у кого еще какие идеи
как сделать морозный узор на стекле?

EGO* 08.08.2006 12:53

Вложений: 1
вторая часть архива

xintrea 08.08.2006 14:07

Вложений: 1
Ускорить построение через фрактал можно простым способом - просто исправив конструкцию

Код:

if(...)plot_black(j,k);
else plot_white(j,k);

на

Код:

if(...)plot_black(j,k);
Т.е. будут рисоваться только темные снежинки, но при этом рисунок фрактала сохранится неизменным. За счет использования одной функции отрисовки вместо двух, и отрисовки снежинок только в местах фрактальной фигуры, а не на всей поверхности, ускорение получается в несколько раз!

Заодно, перестает появляться сообщение что Актион Скрипт слишком долго работает.

Флешка и исходник


Часовой пояс GMT +4, время: 09:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.