Графическая оболочка предоставляет возможность производить геометрические преобразования, которые переводят циклы в циклы и сохраняют отношения между ними (при должной интерпретации). Таким образом фигура преобразуется в другую со сходными свойствами. Доступны преобразования двух видов:
При каждом преобразовании пользователь может задать, каким образом они скажутся на циклах и их отношениях. Мы кратко обсудим это ниже. Есть также обучающее видео (и на Youtube) по теме преобразований.
Многие преобразования в элементарной геометрии могут быть реализованы как дробно-линейные преобразования с подобранными (гипер)комплексными коэффициентами. Гиперкомплексные числа нужны для работы во всех девяти геометриях Кэли–Клейна [11, Прил. Б]. Для простоты мы сейчас будем говорить только о комплексных числах.
Отождествим точку плоскости с координатами (u,v) и комплексное число z=u+i v с мнимой единицей i2=−1. Дробно-линейное преобразование плоскости связанное с 2× 2 комплексной матрицей (
a | b |
c | d |
) определяется так
z ↦ |
| . (1) |
Если ad−bc≠ 0 и комплексная плоскость расширена точкой в бесконечности то дробно-линейное преобразование является взаимно однозначным.
Важный подвид преобразований (1), когда все коэффициенты a, b, c и d действительные числа, называется преобразованием Мёбиуса. Они имеет дополнительные интересные свойства, например, сохраняют действительную прямую. Преобразования Мёбиуса порождаются матрицами из группы SL2(ℝ). В меню графической оболочки они вынесены отдельной строкой SL(2,R) Мёбиусово преобразование ⊞ .
Вот несколько примеров геометрических преобразований реализуемых (1):
1 | t |
0 | 1 |
a | 0 |
0 | 1 |
0 | −1 |
1 | 0 |
cosα +i sinα | 0 |
0 | 1 |
Отметим, что первые три преобразования являются Мёбиусовыми. Все более общие дробно-линейные и Мёбиусовы преобразования получаются как комбинации уже приведённых.
Отражение в цикле или инверсия—важный пример преобразований реализованных в графической оболочке. Если цикл является прямой, то это преобразование—хорошо знакомая зеркальная симметрия. В общем случае мы наблюдаем отражение в <<кривом зеркале>>.
Графическая оболочка предоставляет две возможности задать отражение:
Задавая преобразование фигуры пользователь должен выбрать один из вариантов:
В случае, если отношения циклов, не сохраняются преобразованием пользователь получает дополнительный выбор:
При сохранении прежней фигуры появляется необходимость создать не повторяющиеся метки для новых циклов. Это реализовано через механизм регулярных выражений. По умолчанию оболочка предлагает такую схему переименования:
^([^{].*?)(\^(.+))?$ $01^$03$`0 ^\{([^\^]+)(\^\{(.+?)\}|\^([^{]))?(.*)\}$ $01^{$03$040}$05
Это исходный шаблон и строка замены разделённые символом табуляции. Данный пример производит такие замены символов:
A → A^1
и
A^123 → A^1231
(заметим, что A^1231
будет показано графической средой как A1231). Если последнюю единичку в строке замены переправить на 2 (или любой другой символ), то такая же замена будет сделана в верхнем индексе новой метки. Пользователь может самостоятельно задать свои регулярные выражения для замены меток. Может быть определено несколько правил замены для последовательного применения. В этом случае каждая пара
<<шаблон>>TAB<<строка замены>> должна начинаться с новой строки.