Гранидус (прежде «Октаэдр», v0.054) — методичка. Версия страницы стоит в правом верхнем углу.
Знак Zerkalius, показанный телом: пирамида и её зеркало, сложенные основаниями. Общее основание — квадрат в горизонтальной плоскости — и есть зеркало, поэтому оно нарисовано ярче всего остального.
На гранях лежат биты. Верхняя половина несёт картину как есть, нижняя — ту же самую картину, отражённую и инвертированную. Сравните любой ряд сверху с тем же рядом снизу: это не похожая картинка, это одна и та же, увиденная с другой стороны зеркала. В терминах самого приложения — зеркало «инв-разв».
Граней у основания (раздел «🎲 Картина») — 4 даёт октаэдр, 3 — треугольную бипирамиду: две трёхгранные пирамиды под общим треугольником, шесть граней вместо восьми. Есть и 5, и 6, и плоские: 2 — крест из двух ромбов, стоящих перпендикулярно друг другу, у каждого своя картина; их линия пересечения идёт по оси и показывается вместе со скрытыми рёбрами, тем же пунктиром; 1 — одна грань, ромб, видный с обеих сторон. Плоские видны с обеих сторон: толщины у листа нет. Правило то же: верх — картина, низ — она же, отражённая и инвертированная. При смене основания картина собирается заново: у каждой грани своя.
▼↙ Аниматрица и ▼↘ (раздел «⇄ Реверс», клавиши 4 и 5) — волна из Code на гранях: проход от вершины вниз, каждый ряд переписан по уже переписанному верхнему; 1 — символ, 0 — пусто, поэтому одинаковые дают 0, разные — 1. Сосед сверху — справа (↙, волна вдоль левой стороны) или слева (↘, вдоль правой). «⇄ Шаг» — один проход, «▶ Цикл» — подряд, назад — точная отмена. Картина возвращается через степень двойки проходов (16 рядов — 16, 32 — 32, 13 — тоже 16), и в строке шага появляется «цикл за N». Треугольник Серпинского за проход съезжает на ряд вдоль стороны.
△ Серпинский (там же) — на каждой грани треугольник Серпинского: бит ряда r на месте k — это C(r, k) по модулю 2, треугольник Паскаля по чётности, тот же, что рисует «Правило 90» из одной точки в Code. Держится при смене плотности (лучше всего видно на 16, 32, 64 рядах — степенях двойки), снимается «🎲 Новой картиной» или своими битами. Снизу, как всегда, — он же, инвертированный.
Биты идут рядами, параллельными экватору: ряд у вершины — один бит, каждый следующий на бит длиннее. Цифры живут в объёме вместе с телом, а не наклеены картинкой: размер убывает с расстоянием, яркость — по тому, насколько грань отвёрнута от взгляда.
Грань, повёрнутая почти ребром, цифр не показывает совсем — только рёбра. Кегль считается от расстояния, а не от наклона, поэтому на косой грани буквы наезжают друг на друга и, складываясь, дают полосу ярче нормальной грани, в которой всё равно ничего не прочесть.
| Мышь | тянуть — крутить; колесо — ближе и дальше |
| Палец | один — крутить; два — щипок для увеличения |
| Наведение | подвести курсор к цифре — загорится её двойник; работает, только пока включена кнопка «◎ Наведение» (V) |
| Пробел | вращение включить и остановить |
| Enter | цикл шагов включить и остановить |
| ◄ ► | шаг назад и вперёд |
| ▲ ▼ | такт цикла быстрее и медленнее |
| 1 2 3 | действие: ⇄ разворот, ⇅ инв-разв, ↻ Круг Инв |
| D · L · V · F | биты · нити · наведение · забыть память |
| N · T | новая картина · сменить палитру |
| E | все рёбра тела — показать и спрятать |
| P | режим точек — бит клеткой, для большой плотности |
| C | стороны света у углов экватора — показать и спрятать |
| Z · колесо | Дзен: спрятать всё, кроме тела (щелчок колесом мыши — то же) |
| R | запись видео с холста, она же кнопка ⏺ в углу |
| ⌂ | значок в левом нижнем углу (на телефоне — вверху, рядом с ⚙): назад в Хаб |
| Клик по цифре | закрепить пару; повторный клик — снять |
| Shift+клик | перевернуть бит — двойник перевернётся сам |
| Esc | снять все закрепления (а в методичке — закрыть её) |
| Esc в поле | выйти из поля своих бит — снова заработают клавиши прибора |
| H · F1 | открыть и закрыть эту методичку |
Буквы работают и в русской раскладке. Если фокус стоит в ползунке, клавиши ему и достаются — стрелки двигают бегунок.
Кнопки разложены по разделам: 🎲 Картина, 👁 Вид, 🎨 Цвета, ⇄ Реверс, 🔗 Связи — так же, как в Layers и в Zerkalius Code. У раздела шапка ✥ имя ✕. За шапку раздел можно перетащить. Обе панели — и левая, и правая — магнитят: отпущенный у левого или правого края экрана раздел прилипает к этой панели и встаёт между другими разделами там, где курсор (пустая панель, пока тащат, проступает пунктиром). Отпущенный посередине — висит на холсте плавающим окном. По умолчанию слева стоят Картина, Вид и Цвета, справа — Реверс и Связи. ✕ прячет раздел, вкладка в полосе сверху показывает его снова. ↺ в конце полосы возвращает раскладку по умолчанию, 📖 открывает эту методичку. Раскладка помнится в браузере. На телефоне разделы всегда собраны в лист снизу, а таскать их нельзя.
У каждого ползунка стрелки ◄ ►: клик двигает ровно на один шаг этого поля, удержание гонит быстро и разгоняется — через полсекунды по два шага, потом по четыре и по восемь. Настройки, палитра и положение тела сохраняются в памяти браузера и переживают перезагрузку.
Три действия над каждым рядом бит — те же зеркала, что и в самом приложении:
Память считает, сколько шагов подряд бит на этом месте не менял значения. Держится — счётчик растёт, дрогнул — обнуляется. Место, которое дрогнуло, гаснет почти до фона; место, которое стоит, разгорается и краснеет тем сильнее, чем дольше держится. Через несколько тактов на гранях светится один скелет — и это не украшение, а симметрия ряда, ставшая видимой.
Считается по значению «до и после», а не по формуле «какие места палиндромные». Палиндромность — верный ответ ровно для одного разворота; возьмёшь другое действие, и правило станет другим, а вопрос тем же. Поэтому все три кнопки пользуются одной памятью.
Чего ждать от каждого действия. Разворот сам себе обратен: два шага возвращают ряд. Значений всего два, поэтому бит меняется тогда и только тогда, когда его место не палиндромное — разворот сам и есть «изменяющиеся переворачиваются». Память поэтому насыщается за пару тактов и дальше стоит: палиндромные места не сдвинутся никогда. Чтобы память рисовала, а не замирала, возьмите ↻ Круг Инв: у ряда длины n он возвращается к себе лишь через 2n шагов, каждый такт задевает другие места, и красный скелет всё время перестраивается. Поставьте медленный такт и запустите цикл — вот там и начинается самое интересное.
Шаг назад отматывает картину, но не память: она про то, что бит выдержал сделанный шаг, а шаг назад — такой же сделанный шаг. Снимает её только ✕ Забыть. Смена действия тоже обнуляет память: счётчики набраны прежним действием, продолжать их новым значило бы показывать красным то, чего не проверяли.
Строка внизу панели: номер шага — на сколько картина ушла от исходной — и доля бит, устоявших на последнем шаге.
Бит верхней грани и бит нижней с тем же номером вокруг оси и теми же координатами стоят в зеркальных точках и всегда противоположны по значению. Тронешь один — второй меняется в тот же миг, и не потому, что между ними что-то передалось, а потому, что они с самого начала одно целое, просто увиденное с двух сторон зеркала.
Наведите курсор на цифру — загорится её двойник, между ними протянется нить, на концах кольца. Работает, только пока нажата кнопка ◎ Наведение (клавиша V); по умолчанию она выключена. Иначе пара загоралась бы от любого движения мыши над телом — в том числе когда её просто ведут мимо, — и подсветка из события превращалась бы в мельтешение.
На клик это не влияет: и закрепление пары, и Shift+правка бита работают всегда. Клик — всегда намеренный, в отличие от проезда мышью.
Кликните по цифре — пара закрепится и останется гореть своим цветом, даже когда курсор ушёл и тело крутится дальше. Так можно набрать несколько пар и смотреть, что с ними делает шаг. Повторный клик по той же цифре снимает её; ✕ Снять или Esc снимают все разом, а на кнопке видно, сколько набрано. Смена плотности бит снимает закрепления тоже: мест становится другое число, и старые указывали бы в пустоту.
Клик отличается от поворота по тому, сдвинулась ли рука: дальше четырёх пикселей — это поворот, на месте — клик.
Кнопка 🔗 Нити показывает занавес целиком; ползунок рядом прореживает его — при 26 рядах пар больше тысячи, при 64 — больше восьми тысяч, и без прореживания тело превращается в сплошную штриховку.
Нить всегда отвесная: отражение идёт через плоскость экватора, у двойников общие две координаты из трёх, а третья ровно противоположна.
Shift+клик по цифре переворачивает бит. На экране переворачиваются сразу ДВА: двойник меняется сам, потому что он не копия, а то же самое число, прочитанное с другой стороны зеркала. Это стоит попробовать руками — видно, что связь между ними не пересылка, а одно целое. Память этого места при этом обнуляется: она считает шаги, а ручная правка шагом не является.
Что менялось от версии к версии, почему именно так, что осталось несделанным и словарь
непонятных слов — в соседней странице Борт-журнал (Zerkalius-dnevnik.html, в корне сайта). Каждая версия
целиком хранится в archive\Zerkalius-oktaedr\.