· ··--──══[ COOLer issue #1 ]══─---·· ·
ЭФФЕКТ: RADIAL BLUR by GELTORN/STORM




             -=========ЭФФЕКТ: RADIAL BLUR=========-


  Небольшое  авторское  отступление:  Да, я тоже читал Hugi #15. Эта
статья  не  является  простой перепечаткой статьи из Hugi, как может
показаться в начале. В этой статье я излагаю свое мнение и знания об
этом  эффекте,  а так как в Hugi были лишь общие идеи этого эффекта,
то  я  не  считаю необходимым ссылаться на тех, кто написал статью в
Hugi.

  Идея radial blur`a проста: блюрить по кругу, то есть как в обычном
случае  блюрения  по  одной  координате,  но  с переходом к полярным
координатам.

  Выберем  центр  нашего блюра, пусть это будет, для простоты, центр
экрана.  Допустим  разрешение  экрана  320x200.  Тогда  центр экрана
придется на точку с координатами (160,100). Сместим начало координат
в  эту  точку:  x'=x-160;  y'=y-100.  Теперь  рассмотрим  точку  М с
координатами,  например,  (185,65),  эта  точка  будет нашей текущей
точкой,  на  примере  ее я раскажу как выбирать вторую  точку, чтобы
сблюрить  их  цвета.  Координаты  в нашей новой системе координат, у
этой  точки  будут  M'(25,-35).  Вектор  этой точки тоже будет иметь
координаты (25,-35).

  Теперь  надо  решить,  как  находить  вектор, по которому мы будем
находить вторую точку. Есть два варианта:
1. Изменить длину вектора нашей текущей точки так, что-бы она лежала
в  пределах  от  1  до  некоторого значения max, которое вы выберите
сами, на свой вкус. (Лично я выбрал 8).
2.  Зафиксировать  длину  вектора. (Опять же выбор длины остается за
вами, а я опять выбрал 8).

Лично мне больше нравиться второй вариант, его я и использую.
Вычислим по ней координаты вектора N, округляя до целого:
N.x= 4, N.y= -6.

Тогда координаты искомой точки P будут находиться так:
P(x'-N.x,y'-N.y). То есть, P(21,-29).

Теперь  осталось  сблюрить  точки  M  и  P,  и записать получившиеся
значение в точку M.

  Осталось  расказать в каком порядке надо обрабатывать точки, чтобы
получить правильное, радиально-сблюренное изображение.

Разобьем экран на четыре сектора:

Рассмотрим сектор #1:

Обрабатывать пиксели по координате X, надо в порядке: 1,2,3..., а по
координате Y, по строчно, в порядке: A,B,C... .

  По  такому  же  принципу  надо  поступать  и  в  других  секторах:
обрабатывать  сектор по строкам, начиная с ближней к центру блюра, а
в строке тоже двигаться от центра блюра.

  Естественно,   линии   с   координатами  центра  блюра  надо  тоже
обработать.  Ну вот и все, загляните в прилагаемые исходники, что бы
посмотреть, как можно прооптимизировать этот эффект. Вуе...

Скриншот эффекта:

                                                  ---(Geltorn/Storm)


