Эпициклоида… или эпитрохоида?

Закономерное продолжение экспериментов с математическими кривыми.

Я нашел замечательный ресурс The MacTutor History of Mathematics archive на котором есть раздел об известных математических кривых с примерами на Java.

В добавок я использовал формулы которые нашел на сайте Алексея Сергеева, вот в этой статье.

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

Теперь можно раскрашивать фигуры по своему усмотрению. Самый нижний левый слайдер управляет периодичностью цветовой гаммы, т.е. определяет сколько раз повторяется цветовой переход.

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

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

Попутно я сделал небольшую анимацию отрисовки кривой, но это уже к относится больше к вопросу конечного применения всех этих упражнений. На данном этапе я стараюсь понять как живут эти кривые в динамике, чтобы потом, можно было сделать из этого, что-нибудь интересное. Анимация фигур начинается автоматически, если не производить никаких действи над программой в течение 15 секунд.

Фигуры Лиссажу, гильоши и вектора в Иллюстратор.

Я недавно заинтересовался всякими математическими художествами - фракталами, аттракторами и т.п. Разумеется, я не смог просто так пройти мимо и ударился в эксперименты. Практически готовый код для рисования фигур Лиссажу (фр. Lissajous), я нашел на сайте Е. Скляревского, там еще много всяких таких штук есть, ну вы понимаете, я все-таки больше художник, чем математик и, в конце концов, надо уметь пользоваться “богатствами интернета”.

Я привернул контролы ко всем возможным параметрам и получилась вот такая занятная игрушка - фигуры Лиссажу во всей своей красе, во всех, так сказать интимных подробностях.  Моя фигура Лиссажу эта одна, здоровенной длины, векторная кривая, отрисованная спомощью graphics.lineTo. Для начала, на сладкое,  поиграйтесь с этой штукой, а потом я расскажу кое-что еще интересное.

А теперь о главном.

Как известно, все эти художества используются для оформления разного рода ценных и не очень ценных бумаг. Эти сложные узоры полученные математическим способом называются гильошами или гильоширными сетками. Мне приходилось использовать такие штуки в своей работе. Проблема тут заключается в том, что обычно приходится использовать готовые решения,  а их еще найди. В замечательном Иллюстраторе, в рукопашную изобразить те же фигуры Лиссажу будет, мягко говоря, сложно. Конечно, есть какие-то плагины, и еще есть дорогая, прекрасная программа Цербер для рисования сложных гильоширных сеток, но вы же сами понимаете… все это добро теперь не так просто заполучить бедному дизайнеру… да в конце концов дело даже не в этом.

Как вы понимаете, настоящий воин не мог не заинтересоваться большой красной кнопкой на этом оружии… Так вот, посмотрел я на свою замечательную картинку и задался вопросом: а можно ли вот это художество заполучить в векторе, а еще лучше, чтоб прямо в Иллюстратор? Оказалось еще как можно. При том трюк просто феерически прост! Объясняю: чтобы получить содержимое флэш ролика в векторном виде, надо напечатать его в pdf! Все. То есть, щелкаете правой кнопкой по флэш ролику, выбираете из меню пункт - Печать… затем в качестве принтера Adobe pdf  (если его у вас нет то надо установить, по-моему это часть Adobe Acrobata) и печатаете в файл pdf. А pdf, как известно, прекрасно открывается в иллюстраторе! Ура. Замечательная, офигенная гильоширная сетка ваша! P.S. Мне нравятся развернутые комментарии, которые дают настоящие математики и программисты к алгоритмам и кодам, ну вот, например:

Фрагмент кода: r0 = 110 For v = 0 To 101 * pi Step 0.001

rr = r0 + 120 * Sin(v * 1) ^ 1 + 90 * Sin(v * 18.125) ^ 3

Дальше должно быть ясно...

Вам-то оно, конечно, ясно…  Из :7?%;”;”@ очевидно следует *&%$#@!

Хотя сам я когда начинаю писать о каком-нибудь алгоритме, тоже не очень-то углубляюсь в детали, а надо бы… P.P.S.

Вопрос к аудитории:
в исходном коде было написано:  “…Cos(2# * v))…” Меня интересует  2# это что такое? Что значит?

Как я вытачивал свое портфолио.

portfolio
Дело было аж в 2007 году. Я решил сделать портфолио “не как у всех”, чтобы навигация была поинтереснее, ну вобщем хотелось чудес, особенно посмотрев на это и вот это и еще вот особенно это. Тогда я даже близко не представлял как это реализовать, но уж очень хотелось, чего-то необычного.

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

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

Сайт работает на xml, черпая всю информацию из подгружаемых файлов. Вес основного модуля 142 kb. Я терпеть не могу монструозные сооружения, загружаемые по полчаса, бездумно набитые под завязку фотографиями и музыкальными треками, ну не гуманно это! Поэтому только xml!

На примере этого проекта я разбирался с программированием на ActionScript. Тогда еще не было AS3, поэтому я просто тонул в густом месиве различных практик программирования на as. Слишком много было совершенно разных подходов, кто все в кадрах валит, кто отдельные пакеты пишет, с нуля было совершенно не понятно, как писать код правильно. В конце концов я слепил этот проект, как умел, прямо внутри одного fla файла, но опыт получил колоссальный.

Сейчас, в эпоху AS3  я стараюсь делать все как положено - код отдельно, символы отдельно, кругом классы, классы и классы… отделяю так сказать художественные байты от технических :). И это мне нравится куда больше рассовывания кода по кадрам.

Categories: flash Tags:

Производительность PixelBlender’а

Для меня оказалось сюрпризом, что эффект джина во флэш-плеере воспроизводится значительно медленнее, чем в самом PixelBlender. При этом, чем больше размер объекта к которому применяется шейдер, тем сильнее тормоза.

Я стал разбираться с этим вопросом и нарыл одну весьма интересную запись в блоге Kaourantin.net.

Цитирую:

You heard right, software run time. Pixel Bender kernels do not run using any GPU functionality whatsoever in Flash Player 10.

Да. Во флэш-плеере пикселблендер не использует GPU! Вот и весь сказ. Так что вся эта прекрасная скорость и гладкость наблюдаемая в самом PixelBlender пока что только там и остается. Очень это разочаровало меня если честно, за что боролись? Впрочем, ряд трюков все равно можно исполнить только средствами пиксел блендера - это оправдывает его существование.

Кстати, в статье еще много всякого вкусного о PixelBlender - рекомендую.

Genie. Эффект Джина с использованием PixelBlender.

7 июня 2009 admin 2 comments
genieTest

Недавно в блоге “Флэш-потрошителя” я нашел интересную ссылку в блоге ViValution, о том как создать эффект genie на сильверлайте с помощью пиксельных шейдеров.

Я посмотрел и загорелся идеей сделать этот эффект на As3 c помощью PixelBlender.
Читать далее…