1. Краткое описание возможностей программы.
3. Загрузка готового фрактала из файла.
4. Работа со списком фракталов.
6. Увеличение и уменьшение фрагментов.
7. Диалог "Graphics" - графические настройки.
8. Диалог "Options" - опции программы.
9. Текстовое представление фрактала.
10. Описание внутреннего формата текстового представления.
11. Сохранение в файл и буфер обмена.
13. Нумерация отображений и раскрашивание.
14. Визуальное конструирование фракталов.
15. Размерность текущего множества.
16. Работа с границей самоаффинных тайлов.
Программа Tile Constructor предназначена для работы с двумерными системами итерируемых функций (2D IFS), а так же с их обобщением - Digraph IFS.
Основные возможности.
1) Эффективный алгоритм построения, позволяющий визуализировать распределение плотности на фрактале.
2) В отличие от других программ, которые строят IFS, допускает удобное и быстрое увеличение произвольных фрагментов множества.
3) Позволяет рассчитывать размерность подобия для произвольной Digraph IFS.
4) Позволяет находить представление границы самоаффинных тайлов в виде Digraph IFS, строить эту границу, и рассчитывать ее размерность.
5) Для многих типов Digraph IFS позволяет узнать, налегают ли одни части этого множества на другие (численная проверка условия OSC).
6) Возможность импорта и экспорта фракталов в нескольких форматах, что позволяет использовать программу как конвертер.
7) Достоинством программы является малый размер дистрибутива (около 50кб).
Самоаффинный тайл (в дальнейшем просто тайл) – множество, которое имеет внутренние точки, и состоит из уменьшенных аффинных копий самого себя, причем эти копии могут пересекаться друг с другом только по границе.
Несложно понять, что такими тайлами можно замостить всю плоскость, поэтому еще их можно называть фрактальными паркетами (а точнее - паркетами с фрактальной границей).
Известно большое количество подобных тайлов – это кривая Леви, всевозможные драконы, и т.п.
Загрузка фрактала из файла производится с помощью пункта меню
File->Open...
Программа поддерживает загрузку фракталов из широко распространенного формата FRACTINT, а так же из своего внутреннего формата. Как правило, такие файлы имеют расширение .ifs (например, fern.ifs)
Формат файла (FRACTINT или внутренний) определяется загрузчиком автоматически и пользователю не нужно указывать его самому.
Файл с описаниями может содержать сразу несколько фракталов, в этом случае в пункте "Tile" главного меню появится сразу несколько подпунктов с названиями загруженных фракталов.
При выборе пункта главного меню "Tile" выпадает список загруженных (или созданных) фракталов. Вы можете выбрать любое множество из этого списка, и оно автоматически построится на экране. В меню этот фрактал (далее будем называть его текущим) будет помечен значком.
Дополнительные команды:
File->Clear List... удаляет все элементы списка кроме текущего.
File->Remove... удаляет текущий элемент из списка (если в списке более одного элемента).
При помощи кнопок "стрелка влево" и "стрелка вправо" на панели инструментов можно быстро двигаться по списку назад и вперед. При этом множество будет перестраиваться автоматически.
Во многих случаях при изменении параметров фрактала или настроек программы, множество перестраивается автоматически. Однако перестроить можно и вручную, нажав на кнопку "Build" (синего цвета) в панели инструментов. Принудительно остановить построение можно при помощи кнопки "Stop" (красного цвета).
Во время построения в панели состояния (внизу) отображается процент завершения работы.
Программа позволяет увеличивать прямоугольные фрагменты множества.
При старте программа работает в режиме конструирования.
Для входа в режим увеличения необходимо нажать на кнопку "Zoom in" в панели инструментов. Курсор мыши при этом сменится на значок "Лупа".
Наведите курсор мыши на точку экрана, которая будет центром нужного вам прямоугольника, а затем, нажав и удерживая левую кнопку мыши, перемещайте курсор, тем самым выбирая размер зоны для увеличения. После этого нажмите синюю кнопку "Build" в панели инструментов, и нужный фрагмент увеличится на весь экран.
Если выделить прямоугольник и нажать кнопку "Zoom out", то множество уменьшится - весь экран впишется в выбранный прямоугольник.
Если не выделять прямоугольник, а просто нажать "Zoom out", то произойдет уменьшение в 2 раза.
Выделенный прямоугольник можно перенести в другое место (сохранив его размеры) переместив курсор мыши в новую точку и однократно нажав левую кнопку. Если вместо однократного нажатия выполнить двукратное, то прямоугольник переместится и автоматически произойдет увеличение.
Если не выделять прямоугольник, а просто выбрать мышью точку на экране и выполнить двукратное нажатие левой кнопки, то центр экрана сместится в эту точку и множество автоматически перестроится.
Для удобства работы в панели инструментов есть 2 дополнительные кнопки, позволяющие автоматически подбирать центр экрана и масштаб увеличения.
"Center View" – центр экрана переместится в центр фрактала.
"Origin View" - центр экрана переместится в начало координат.
В обоих случаях, масштаб увеличения выберется из условия, чтобы множество точнее вписывалось в экран.
Эти две кнопки работают и в режиме конструирования.
Если на экране был выделен прямоугольник и выполнено увеличение, то после завершения построения, прямоугольник останется на экране, но будет смещен в самое плотное место фрактала. Это позволяет, например, находить внутренность самоаффинного тайла, простыми нажатиями кнопки "Build" после очередного построения.
В режиме увеличения, при перемещении курсора мыши по экрану, в статусной строке отображаются его текущие координаты (в мировой системе координат).
Для выхода из режима увеличения нужно повторно нажать кнопку "Zoom in"
Диалог вызывается из главного меню "View->Graphics" и содержит следующие элементы.
1) Quality
Качество изображения. При увеличении качества изображения, увеличивается время построения. Для вступления изменений в силу необходимо нажать кнопку "Build".
2) Depth
Глубина раскраски. Любая IFS состоит из нескольких частей, которые являются уменьшенными копиями целого множества. При глубине раскраски=1 каждая из этих частей рисуется своим цветом, при глубине=2 своим цветом рисуется уже каждая часть каждой части и т.д. Если глубина=0, то все множество рисуется одним цветом. Для вступления изменений в силу необходимо нажать кнопку "Build".
3) Invert
Инверсия фона. По умолчанию, изображение строится на черном фоне. Если нажать на эту кнопку, то изображение начинает строиться на белом фоне, что может быть полезно, например, при печати на принтере. Для возврата в обратный режим необходимо повторно нажать эту кнопку. При каждом нажатии на кнопку "Invert", изображение перестраивается автоматически.
4) Shake
Случайным образом перестроить палитру. Программа при построении использует палитру по умолчанию. При нажатии на кнопку Shake все цвета палитры сменяются на случайные. При повторном нажатии цвета вновь заменятся на другие случайные и т.д. При нажатии, изображение автоматически перестраивается.
5) Яркость и контрастность
Полоски регулирования яркости и контрастности. При изменении, изображение автоматически перестраивается.
6) Def
Устанавливает яркость и контрастность по умолчанию. Если яркость и контрастность при нажатии уже были стандартными, то установится "плоский" режим раскраски.
Диалог вызывается из главного меню "View->Options" и содержит следующие элементы.
1) "Text Format"
Выбор формата текстового описания фрактала. В этом формате фрактал будет выгружаться в файл, копирования в буфер обмена, и выводится в окне редактирования.
Допустимы форматы:
- Internal - внутренний
- Fractint - формат ifs программы FRACTINT.
- Ifs Builder - формат программы Ifs Builder
- LSystem - формат l-system программы FRACTINT.
2) "Digits in Text"
Количество цифр в числах при выводе в форматах Internal, Fractint, Ifs Builder
3) "Lattice"
Тип решетки в режиме конструирования фрактала.
Может быть 2-х видов.
- Simple (по умолчанию) - одновременно можно изменять сдвиги у всех отображений, но без проверки элементов решетки.
- Advanced - изменение сдвигов только у текущего отображения, с проверкой каждого узла решетки на неналегание частей получившегося множества.
При выборе пункта "Edit->Edit Bar" на экране появляется диалог с текстовым описанием фрактала. Формат этого описания задается в поле "Text Format" диалога "View->Options". Если фрактал не допускает представление в указанном формате, то программа сама выберет подходящий. По умолчанию, представление будет во внутреннем формате.
Если в диалоге вручную отредактировать текстовое описание, и нажать кнопку "Build", то изменения вступят в силу, и множество на экране автоматически перестроится. При этом формат, в котором представлен фрактал в диалоге, распознается автоматически (этот формат может не совпадать с тем, что указан в поле "Text Format" диалога "View->Options"). Однако после вступления изменений в силу, программа автоматически попытается изменить текстовое описание в соответствии с настройками формата.
Ограничение. На данный момент программа не распознает описание в форматах LSystem и Ifs Builder.
Внутренний формат предназначен для точного аналитического задания целых тайлов и их подмножеств, хотя может применяться для значительно более широкого класса множеств (например, для нецелых тайлов), однако при этом он становится уже приближенным (как формат Fractint). Так же внутренний формат позволяет задавать Digraph IFS.
Текстовое представление состоит из названия фрактала, за которым следует блок с описанием, заключенный в фигурные скобки (аналогично формату FRACTINT).
Сам блок описания состоит из 4 разделов.
1) Положение (position)
Содержит три числа - координаты центра экрана и горизонтальный размер рамки экрана (в мировой системе координат).
2) Множества (sets)
Содержит текстовое представление топологической структуры фрактала.
Каждое множество в этом разделе имеет свой уникальный номер, при этом номера могут быть непоследовательными (например, 2,4,9…). Стандартные IFS всегда состоят из одного множества, Digraph IFS состоят более чем из одного множества. Номер текущего множества (которое построено на экране) указывается вначале раздела.
3) Отображения (maps)
Содержит запись аффинных отображений в аналитическом (матричном виде) виде. Эта запись использует обозначения матриц из раздела "Info". Каждое отображение имеет свой уникальный целочисленный номер, при этом, номера могут быть непоследовательными. В начале раздела задается номер текущего отображения. Как правило, текущее отображение не влияет на вид построенного множества, однако оно активно используется для конструирования.
4) Обозначения (info)
Содержит аналитические представления базовых матриц для раздела "отображения".
Пример описания множеств и отображений:
sets current=s0
s0=m0(s0)+m1(s0)
maps current=m0
m0(x)=…
m1(x)=…
Текущее множество s0 (с номером 0), текущее отображение m0.
Множество s0 состоит из объединения множества s0 под действием отображения m0 и множества s0 под действием отображения m1.
Если мы изменяем, для примера номер отображения m1 на m7, то изменения необходимо выполнить в 2-х разделах:
1) Строку s0=m0(s0)+m1(s0) из раздела "Множества" нужно заменить строкой s0=m0(s0)+m7(s0).
2) Строку m1(x)=… из раздела "Отображения" нужно заменить строкой m7(x)=….
Если после этого мы решили добавить еще одно отображение (например, m9), то изменения необходимо выполнить также в 2-х разделах:
1) Строку s0=m0(s0)+m7(s0) из раздела «Множества» нужно заменить строкой s0=m0(s0)+m7(s0)+m9(s0).
2) В раздел "Отображения" нужно добавить строку m9(x)=….
В итоге получаем:
sets current=s0
s0=m0(s0)+m7(s0)+m9(s0)
maps current=m0
m0(x)=…
m7(x)=…
m9(x)=…
В любой момент времени имеется возможность сохранения текстового представления множества в файл и в буфер обмена.
Формат описания можно выбрать в настройках "View->Options".
a) Для записи в файл текущего фрактала используйте "File->Save As"
b) для копирования текстового описания текущего фрактала в буфер обмена используете кнопку "Copy" на панели инструментов.
c) для записи в один файл всего списка множеств, используйте "File->Save List"
Имеются следующие особенности:
1) Текущее положение экран на плоскости, сохраняется только в форматах "Internal" и "Ifs Builder 3d"
2) Если вы хотите в дальнейшем работать с сохраняемым фракталом с помощью программы "Tile Constructor", то используйте форматы "Fractint" или "Internal" - только они загружаются в программу.
3) В формате L-system можно сохранить лишь некоторые классы IFS (ограничение формата).
4) Фракталы с более чем одним множеством невозможно сохранить в формате Fractint (ограничение формата)
5) В формате IFS Builder можно сохранить любое множество с которым работает программа.
6) Меры для формата Fractint (7-е число в каждой строке) рассчитываются программой автоматически из условия наибольшей равномерности плотности множества.
Так же имеется возможность сохранения построенного изображения в файл формата "bmp". Для этого необходимо использовать пункт меню "File->Save Bitmap"
Создать новое множество можно при помощи диалога "New", который вызывается при помощи пункта меню "File->New...".
Созданное множество автоматически добавляется в конец текущего списка множеств.
С помощью диалога можно задать базовый решеточный тайл, который с помощью операций конструктора и/или редактирования текстового описания в дальнейшем может быть преобразован в различные множества.
Базовый тайл характеризуется 2-мя параметрами - количеством частей (аффинно ему подобных) из которых он состоит, и следом, характеризующим ориентацию этих частей относительно всего множества.
В терминах самоподобных IFS, первый параметр, это количество отображений, а второй - общий для всех отображений угол поворота (матрицы всех отображений для самоподобного базового тайла одинаковы).
Количество частей базового тайла можно выбрать при помощи элемента "Digits". След можно выбрать при помощи элемента "Group".
Для удобства вместо самого следа (целого числа), в выпадающем списке "Group" отображается более содержательная информация, которая расшифровывается следующим образом:
Первый символ - тип получившегося IFS - самоподобный (S), самоаффинный (A), жорданов (J).
Второй символ - порядок группы поворотов, совместимый с базовым тайлом.
По топологическим соображениям может принимать значения 2 (поворот на 180 градусов), 4(поворот на 90 градусов), 6 (поворот на 60 градусов).
Возможен так же третий символ "+", который означает, что наряду с группой поворотов допустимо также и отражение.
Чем больше порядок группы, которую допускает базовый тайл, тем богаче семейство, которое может быть порождено от него (потому что каждую его часть можно будет независимо от остальных вращать на соответствующий группе угол или отражать).
Сохранение в формате "LSystem" возможно только для тех фракталов, которые были порождены из базового тайла допускающего группу поворотов порядка 4 или порядка 6.
Расцветка множества на экране существенно зависит от нумерации отображений. Для соответствующей части фрактала номер отображения одновременно служит и номером цвета в палитре. Раскраска множества так же зависит от глубины, которая задается в диалоге "View->Graphics".
Ниже перечислены возможные режимы раскрашивания.
1) Глубина раскраски =0
Все множество отображается одним цветом, номер этого цвета равен номеру текущего отображения. Например, если текущее отображение имеет номер 7, то все множество на экране будет раскрашено цветом 7 из текущей палитры.
2) Глубина раскраски =1
Каждая часть множества раскрашивается своим цветом, который берется из номера соответствующего отображения. Например, множество s0=m0(s0)+m7(s0)+m9(s0) раскрасится следующим образом: подмножество m0(s0) раскрасится цветом 0 из текущей палитры, m7(s0) цветом 7, m9(s0) цветом 9.
3) Глубина раскраски >=2
В этом случае раскраска не зависит от номеров отображений, и выполняется автоматически (однако с учетом текущей палитры).
Палитру можно сменить на случайную, нажав на кнопку "Shake" в диалоге "View->Graphics".
Основная идея конструирования состоит в том, чтобы взять некоторое базовое множество (например, загрузить из файла или создать с помощью диалога "New"), а затем при помощи операций конструктора, преобразовать его в новое множество.
В программе предусмотрено 3 типа модификаций базового множества.
1) Изменение сдвигов отображений.
2) Изменение углов поворота отображений.
3) Разбиение текущего отображения, на несколько производных.
При конструировании активно применяется соответствие между отображениями и цветами палитры (см. ранее). Поэтому в дальнейшем будет применяться термин "цвет отображения".
1) Изменение сдвигов отображений.
Визуальное изменение сдвигов отображений возможно только для множеств, производных от целочисленных тайлов.
При старте программы на экране отображается некоторый базовый тайл и сетка точек, каждая точка соответствует некоторому множеству. Если навести курсор мыши в окрестность некоторой точки и нажать левую кнопку, то это приведет к изменению сдвига у отображения с тем цветом, который был у точки. При этом множество на экране автоматически перестроится. Набор возможных сдвигов, определяется тем условием, чтобы получаемо множество было решеточным.
По умолчанию, точки на экране имеют разные цвета, и поэтому одновременно можно изменять сдвиг у любого из отображений, при этом гарантируется, что множества, полученные из базового тайла, так же будут тайлами. Однако это несколько сужает класс конструируемых множеств.
Если в диалоге View->Options изменить тип сетки (элемент "Lattice") на "Advanced", то появится возможность, строить любое решеточное множество, однако сдвиги при этом будут меняться только у текущего отображения (соответственно и точки на экране будут одного цвета). В этом режиме происходит проверка каждого допустимого сдвига (точки), что может повлечь за собой замедление построения сетки. Если части множества, соответствующего точке, не налегают друг на друга, то эта точка будет большего размера, чем в случае налегания частей.
2) Изменение углов поворота отображений.
В программе имеется возможность менять углы поворотов матриц отображений с помощью диалога "View->Rotations", который появляется сразу после старта программы. На этом диалоге имеется рамка, в которой каждому отображению сопоставлен прямоугольник соответствующего цвета. Положение каждого цветного прямоугольника по горизонтали (в пределах рамки) соответствует различным углам поворота матрицы соответствующего отображения. В зависимости от базового тайла, допустимо различное количество углов поворота.
Для выбора нужного угла поворота, необходимо навести курсор мыши в нужное место рамки, и нажать левую кнопку. Цветной прямоугольник, находящийся на той же горизонтали что и курсор мыши переместится в указанную позицию, и фрактал на экране автоматически перестроится. То отображение, которое при этом изменилось, становится текущим. Прямоугольник, соответствующий текущему отображению, всегда помечен крестиком.
В режиме Simple Lattice (который работает по умолчанию), в результат изменения углов поворота отображений из самоаффинного тайла так же всегда будет получаться тайл.
В зависимости от базового тайла, рамка с набором цветных прямоугольников может быть разделена по горизонтали на две части. Это означает, что наряду с поворотами, базовый тайл допускает отражения. При этом положения цветных прямоугольников в левой части рамки будут соответствовать простым поворотам матрицы отображения, а положения в правой части будут соответствовать композиции отражения и поворота.
3) Разбиение текущего отображения, на несколько производных.
Это основной способ создания решеточных фракталов с разными размерами частей.
Для выполнения операции необходимо в диалоге "View->Rotations" нажать на кнопку "Divide".
При этой операции, текущее отображение исчезает, а вместо него появляется несколько новых (столько, сколько было всего до применения операции). При этом новые отображения являются композицией старых (кроме текущего) и текущего.
Это позволяет, например, из тайла, состоящего из частей одного размера, создать тайл, состоящий из частей различного размера. В дальнейшем, можно будет использовать полученный тайл, как базовый для других.
В заголовке окна всегда отображается название текущего фрактала, а так же его размерность (или размерность его границы, в зависимости от режима см. далее).
Для самоподобного множества отображается размерность подобия, которая в случае отсутствия налегания частей совпадает с Хаусдорфовой.
Для самоаффинного множества отображаемая размерность в общем случае не совпадает с хаусдорфовой, однако служит хорошим ее аналогом.
Отображаемая размерность границ любых самоаффинных тайлов всегда совпадает с хаусдорфовой.
Чем большая размерность отображается в заголовке окна, тем большее качество построения необходимо выставлять в настройках программы. При этом потребуется и большее время построения.
Граница любого самоаффинного тайла является аттрактором Digraph IFS.
Для входа в режим работы с границей необходимо воспользоваться кнопкой "Boundary Mode".
Отличия данного режима от стандартного:
a) Вместо самого множества будет строиться его граница.
б) В файл и в буфер обмена будет записываться текстовое описание границы, а не самого множества
c) В заголовке окна будет отображаться не размерность самого множества, а размерность его границы.
Таким образом, имеется возможность просмотра топологической структуры границы.
Замечание о формате LSystem. Если исходный тайл допускает представление в формате LSystem, то его граница также допускает такое представление.
Для выхода из режима работы с границей нужно повторно нажать кнопку "Boundary Mode".