Не простая координатная система, а золотая

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

image

Распределение углов в ромбах в одном 1:4, 36°:144°, в другом 2:3, 72°:108°. Углы в ромбах кратны одной десятой полного разворота, 36°.

Определим координаты углов правильного десятиугольника.

градус cos sin
0 1 0
36 0,809017 0,587785
72 0,309017 0,951056


image

Остальные симметрично, меняется только знак.

Сразу заметно, что косинусы углов 36° и 72° отличаются на 0,5. И это очень многозначительный факт!

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

Для абсциссных координат это просто: среди значений ноль, который представлен нулевыми множителями. Среди ординатных координат третья — единица — не соразмерна остальным двум. Но, так как разница координат это 0,5, то эта разница может стать одним из коэффициентов, а второй коэффициент будет меньшим значением. Значение 1 получится множителем 2.

*36° x y
Cxa=0,5 Cxb=0,309017 Cya=0,951056 Cxb=0,587785
0 2 0 0 0
1 1 1 0 1
2 0 1 1 0
3 0 -1 1 0
4 -1 -1 0 1
5 -2 0 0 0
6 -1 -1 0 -1
7 0 -1 -1 0
8 0 1 -1 0
9 1 1 0 -1


И значит, существует целочисленная система координат.

$\{x_1,x_2,y_1,y_2\}=(C_{xa}x_1+C_{xb}x_2,C_{ya}y_1+C_{yb}y_2)$

image

Коэффициенты попарно различаются на один и тот же множитель, это коэффициент золотого сечения.

$C_{xb} = \varphi C_{xa}$

$C_{yb} = \varphi C_{ya}$

$\varphi = \frac{\sqrt{5} - 1}{2}$

Можно вывести точное представление для коэффициентов.

$C_{xa} = \frac{1}{2}$

$C_{xb} = \frac{\varphi}{2}$

$C_{ya} = \frac{\sqrt{3 + \varphi}}{2}$

$C_{yb} = \frac{\sqrt{2 - \varphi}}{2}$

Дальше магия золотого сечения:

$\\\varphi^2 = 1-\varphi$

$\\(a+b\varphi)\cdot\varphi=a\cdot\varphi+b(1-\varphi)=b+(a-b)\varphi$

$\\(a+b\varphi)/\varphi=(b-a)+a\varphi$

$\\(3+\varphi)(2-\varphi)=6+2\varphi-3\varphi-\varphi^{2}=6-\varphi-(1-\varphi)=5$

Отсюда множество закономерностей:

Тривиальные:

$C_{xa} \cdot C_{xa} = C_{xa} / 2$
$C_{xa} \cdot C_{xb} = C_{xb} / 2$
$C_{xa} \cdot C_{ya} = C_{ya} / 2$
$C_{xa} \cdot C_{yb} = C_{yb} / 2$

Из-за равенства отношения коэффициентов:

$C_{xb} \cdot C_{ya} = \varphi \cdot C_{xa} \cdot C_{ya} = \varphi \cdot C_{ya} / 2 = C_{yb} / 2$
$C_{xb} \cdot C_{yb} = \varphi \cdot C_{xa} \cdot \varphi \cdot C_{ya} = (1 - \varphi) \cdot C_{ya} / 2 = (C_{ya} - C_{yb}) / 2$

Квадраты коэффициентов:

$C_{xb} \cdot C_{xb} = (1 - \varphi) / 4 = (C_{xa} - C_{xb}) / 2$
$C_{ya} \cdot C_{ya} = (3 + \varphi) / 4 = (3 C_{xa} + C_{xb}) / 2$
$C_{yb} \cdot C_{yb} = (2 - \varphi) / 4 = (2 C_{xa} - C_{xb}) / 2$

Произведение:

$C_{ya} \cdot C_{yb} = \sqrt{(3 + \varphi)(2 - \varphi)}/4 = \sqrt{5} / 4 = (1 + 2 \varphi) / 4 = (C_{xa} + 2 C_{xb}) / 2$

Исходя из этих свойств можно составить матрицу для целочисленного умножения векторов:

const crd vmul[16] = {
{ 1, 0, 0, 0}, { 0, 1, 0, 0}, { 0, 0, 1, 0}, { 0, 0, 0, 1}, 
{ 0, 1, 0, 0}, { 1,-1, 0, 0}, { 0, 0, 0, 1}, { 0, 0, 1,-1}, 
{ 0, 0, 1, 0}, { 0, 0, 0, 1}, {-3,-1, 0, 0}, {-1,-2, 0, 0}, 
{ 0, 0, 0, 1}, { 0, 0, 1,-1}, {-1,-2, 0, 0}, {-2, 1, 0, 0}
};

И всё перемножение сведётся к

int* vm = (int*)vmul;
for(int i = 0; i < 4; i++) 
  for(int j = 0; j < 4; j++) 
    for(int k = 0; k < 4; k++)
      v3[k] += v1[i] * v2[j] * vm[(i * 4 + j) * 4 + k];

Векторная единица в этой системе выражается как {2,0,0,0}. После простого переменожения таких единиц мы получим {4,0,0,0}. Так что, деление на два, которое было в каждой формуле для коэффициентов, производится отдельно, как нормировка:

for(int i = 0; i < 4; i++) v3[i] /= 2;

Особенность этой координатной системы в том, что она покрывает всю плоскость с любой заданной точностью. Можно повторять любое количество шагов, выбирая любое из десяти направлений и всё равно оставаться в целочисленных координатах.

Но не все сочетания координат определяют место, достижимое из начального положения.

Для одного шага разложения по координатам следующие: {2,0,0,0}, {1,1,0,1}, {0,1,1,0}, {0,-1,1,0}, {-1,-1,0,1}, {-2,0,0,0}, {-1,-1,0,-1}, {0,-1,-1,0}, {0,1,-1,0}, {1,1,0,-1}. Любая комбинация этих шагов допустима.

Вместе с единичным шагом {2,0,0,0} сочетания
{0,1,1,0} – {0,1,-1,0} = {0,0,2,0},
{1,1,0,1} – {1,1,0,-1} = {0,0,0,2},
{1,1,0,1} + {1,1,0,-1} – {2,0,0,0} = {0,2,0,0}
означают, что любую отдельную координату можно сдвинуть на 2, и значит, на достижимость влияет только групповая четность координат. Достижимых сочетаний получается четыре: нулевая: {0,0,0,0}, от одиночных шагов: {1,1,0,1}, {0,1,1,0}, и их комбинация: {1,0,1,1}.

Как видно, групповая четность абциссных координат однозначно взаимосвязана c групповой четностью ординатных координат. Это значит, что вертикальные координаты делятся на четыре типа, горизонтальные координаты тоже делятся на 4 типа, а к координатной системе принадлежат точки исключительно при их правильной комбинации.

image


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

В общем, существует система координат, которая совмещает целое значение координат и повороты в 36°. Когда я её вывел, был удивлён, что не знал о ней раньше. Но теперь о ней есть статья на Хабре.

$\frac{{\displaystyle\frac{5-\sqrt5}{5+\sqrt5}}-\sqrt{\displaystyle\frac{5+\sqrt5}{5-\sqrt5}}}{\displaystyle\frac{5+\sqrt5}{5-\sqrt5}+\sqrt{\frac{5-\sqrt5}{5+\sqrt5}}}+\frac{5-\sqrt5}{5+\sqrt5}=0$



$\frac{5-\sqrt5}{5+\sqrt5}+\sqrt{\frac{5-\sqrt5}{5+\sqrt5}}\overset1=\frac{5+\sqrt5}{5-\sqrt5}-\sqrt{\frac{5+\sqrt5}{5-\sqrt5}}$

Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 19
  • +1
    В общем, существует система координат, которая совмещает целое значение координат и повороты в 36°

    Правильно ли я понял, что при повороте базиса точки, имеющие целочисленные координаты — сохранят целочисленные кординаты?
    • 0
      Да. Сам поворот может производиться целочисленным умножением.
    • 0
      Особенность этой координатной системы в том, что она покрывает всю плоскость с любой заданной точностью.

      Всё время речь о целых числах и вдруг любая точность. Т.е. возможна точность 1e-6. Но как это стыкуется с целыми числами?

      • 0
        Например, точка {1346269,-2178309,0,0} находится на плоскости в (2,05124е-7;0)

        • 0
          Например, точка {2692538,-4356618,0,0} находится на плоскости в (2,05124e-07;0).

          При сложении единичных шагов 72° {0,1,1,0} и 108° {0,-1,1,0} получится вектор {0,2,0,0} который направлен как единичный вектор {2,0,0,0}, но меньше по длине.
          При умножении {0,2,0,0} на {0,2,0,0} получится {2,-2,0,0}, он ещё меньше по длине.
          Так можно дойти до {2692538,-4356618,0,0}, по длине 2,05124e-07.
          • 0

            Правильно ли я понимаю, что преобразование декартовых координат в "золотые" такая же тривиальная задача, как обратная операция?

            • 0
              Нет, для многих точек нужно подбирать ближайшие с приемлемой точностью.
              например, точку (0,5;0) нельзя отобразить в золотую систему, так как {1,0,0,0} не подходит по чётности.
        • +1
          Можете сформулировать, какие преимущества есть у этой системы координат по сравнению с другими?
          • +1
            Для отображения мозаики Пенроза при расчетах координат использовались только целые числа, не накапливалась ошибка плавающих чисел.

            Думаю, координатная система, в которой можно отображать пятиконечные звёзды с абсолютной точностью может иметь и другие преимущества.
            • 0
              Думаю, координатная система, в которой можно отображать пятиконечные звёзды с абсолютной точностью может иметь и другие преимущества.

              Ну, это для политиков ))

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

              Только целые числа — это ок.

              На википедии есть статья, посвященная Мозаике Пенроуза. Там написано, что есть три мозаики Пенроуза (вы описали Р3), мне показалась интересной и версия на дельтоидах.

              Думаю, практически мозаики такого рода можно применять в остеклении фасадов, это весьма изменит облик здания.
        • 0
          Спасибо, очень интересная статья.
          • 0

            Осталось запилить движок игровой со спрайтами и кватернионами. Утащил статью в закрома.

            • +2
              мозайку

              :)

              • 0
                Извиняюсь за небольшой оффтоп.
                Мне интересно, насколько тривиальной считается матрица поворота? Ее простейший случай.
                Имеет ли смысл написать статейку на Хабр «О матрице поворота простыми словами».
                Или это достаточно просто, чтобы об этом целую статью писать?
                • 0
                  Товарищ, пиши конечно. Про матрицы поворотов и другие преобразования. Никак они в ум не заходят заразы, я уже столько про них перечитал. Хочу для двухмерного движка наколхозить модуль отображения равноугольных и кубических панорам и застреваю на математике. Равноугольные-то поддались, а кубические вводят в ступор.
                • 0
                  В 1981 году Николас де Брёйн описал алгебраический способ построения мозаик Пенроуза на основе пяти семейств параллельных прямых (или, альтернативно, с помощью сечения пятимерного пространства двумерной плоскостью).

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

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.