суббота, 30 ноября 2013 г.

Snowflakes Generator


Генератор снежинок. Мой эксперимент с рекурсивным алгоритмом. Программа написанна на языке ActionScript 3.0 и собрана на платформе Adobe Air, что позволяет установить ее на "десктоп" платформы - Windows, Mac OS, Linux.

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







Далее хочу разобрать параметры генерации, хотя они интуитивно понятны если их аккуратно прочитать и постараться самостоятельно осмыслить. Чтобы скрыть настройки можно использовать горячую клавишу C.
ДЛЯ ГЕНЕРАЦИИ КАРТИНКИ НУЖНО КЛИКНУТЬ ПО ПУСТОМУ ПРОСТРАНСТВУ.


1. Общие настройки.
Здесь задается количество периодов, включая первый - Periods (от 1 до 10). Моды Lines Mode, Circles Mode, Poly Mode позволяют получить различные варианты чередования объектов, по своей сути это индекс пропуска отрисовки объектов (остаток от деления периода на индекс равен нулю).

2. Настройки отрисовки объектов.
Можно отключить отрисовку объектов (Polygons, Lines, Circles), или только первых частей (для полигонов и линий - First Lines, First Poly). Также здесь есть переключатели ослабления (уменьшения с каждым периодом) прозрачности полигонов и всех линий (в том числе и для кругов), толщины линий и кругов - Line / Polygon Alpha Decrease, Line / Circle Thickness.

3. Параметры сохранение полученной картинки.
Результат можно сохранить как целую картинку (кнопка Save All), так и по отдельности каждый тип элементов (Save Lines, Save Polygons, Save Circles). Scale Factor - коэффициент умножения картинки от базового размера 800х800px. Если выставить параметр Blend Mode отличный от Normal то слои с элементами будут накладываться друг на друга под выбранным "режимом смещивания" (сначала полигоны, поверх линии и потом круги). Также можно запустить генерацию и сохранения определенного количества случайных картинок (параметр Generate Count) - кнопка Generate and Save (при этом картинки будут сохраняться на рабочий стол в папку с именем snowflakes-время в формате UTC).

4. Различные варианты цвета.
Для каждого из элементов общей картинки (линия, круг, полигон) можно задать свой собственный цвет, но для этого необходимо чтобы был выключен "рандомайзер" (к примеру у полигонов он включен). Здесь есть несколько режимов генерации "случайных" цветов (Color Randomizer): ON \ OFF - включает изменение цвета для всех узлов элемента при ее новом создании; Each - изменяет цвет для каждого узла. Step - изменяет цвет объектов только при смене периода. (O) - означает что этот параметр перезаписывает выше стоящий, т.е. если включен Step и Each, то работать будет Step.

5. Параметры генерации формы объектов.
Sides - интервал сторон в каждом узле, т.е. количество отходящих из узла отростков. Именно этот параметр определяет сложность получаемой снежинки. Его можно установить "стационарным" (Static), при этом выбирается наименьшее значение. Thickness в разделе LINES \ CIRCLES задает первоначальную толщину линий, это значение будет уменьшаться до нуля с каждым периодом (если включен параметр Line \ Circle Thickness Decrease). У линий можно задать статический размер уменьшения длины при каждом периоде - это параметр Static Length Degradation (когда больше нуля), стандартно этот параметр высчитывается случайным образом для каждого периода (в интервале 0.2 - 0.65), он определяет размер снежинки. Радиус круга, в каждом узле, зависит от длины линии - Radius Based on Length, но круг строится только если его радиус больше 1.

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

СКАЧАТЬ ПРИЛОЖЕНИЕ 
ВЫ МОЖЕТЕ РАСПЛАТИВШИСЬ ЗА НИМ ПОСТОМ

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

Отправить комментарий