Previous Up Next
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

5 Преобразования

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

При каждом преобразовании пользователь может задать, каким образом они скажутся на циклах и их отношениях. Мы кратко обсудим это ниже. Есть также обучающее видео (и на Youtube) по теме преобразований.

5.1 Дробно-линейные преобразования

Многие преобразования в элементарной геометрии могут быть реализованы как дробно-линейные преобразования с подобранными (гипер)комплексными коэффициентами. Гиперкомплексные числа нужны для работы во всех девяти геометриях Кэли–Клейна [11, Прил. Б]. Для простоты мы сейчас будем говорить только о комплексных числах.

Отождествим точку плоскости с координатами (u,v) и комплексное число z=u+i v с мнимой единицей i2=−1. Дробно-линейное преобразование плоскости связанное с 2× 2 комплексной матрицей (

  ab
cd

) определяется так

z ↦  
az+b
cz+d
. (1)

Если adbc≠ 0 и комплексная плоскость расширена точкой в бесконечности то дробно-линейное преобразование является взаимно однозначным.

Важный подвид преобразований (1), когда все коэффициенты a, b, c и d действительные числа, называется преобразованием Мёбиуса. Они имеет дополнительные интересные свойства, например, сохраняют действительную прямую. Преобразования Мёбиуса порождаются матрицами из группы SL2(ℝ). В меню графической оболочки они вынесены отдельной строкой SL(2,R) Мёбиусово преобразование ⊞ .

Вот несколько примеров геометрических преобразований реализуемых (1):

Отметим, что первые три преобразования являются Мёбиусовыми. Все более общие дробно-линейные и Мёбиусовы преобразования получаются как комбинации уже приведённых.

5.2 Отражения в циклах

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

Графическая оболочка предоставляет две возможности задать отражение:

5.3 Что делать с циклами и отношениями?

Задавая преобразование фигуры пользователь должен выбрать один из вариантов:

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

    В случае, если отношения циклов, не сохраняются преобразованием пользователь получает дополнительный выбор:

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

^([^{].*?)(\^(.+))?$ $01^$03$`0
^\{([^\^]+)(\^\{(.+?)\}|\^([^{]))?(.*)\}$ $01^{$03$040}$05

Это исходный шаблон и строка замены разделённые символом табуляции. Данный пример производит такие замены символов: A → A^1 и A^123 → A^1231 (заметим, что A^1231 будет показано графической средой как A1231). Если последнюю единичку в строке замены переправить на 2 (или любой другой символ), то такая же замена будет сделана в верхнем индексе новой метки. Пользователь может самостоятельно задать свои регулярные выражения для замены меток. Может быть определено несколько правил замены для последовательного применения. В этом случае каждая пара <<шаблон>>TAB<<строка замены>> должна начинаться с новой строки.


Previous Up Next