Zerkalius Треугольник v0.044
1. Начальный Серпинский — «🔺 Формы», Правило 90
Генератор берёт сид (по умолчанию «1») и число строк N. Поле — N строк шириной
длина сида + 2N, всё залито «0», сид ставится в середину строки 0. Каждая следующая строка считается
из строки над ней: для клетки x смотрятся три соседа сверху — левый, центральный, правый — и по номеру правила
выбирается новый бит. 90 в двоичном виде — 01011010:
| сверху (Л Ц П) | 111 | 110 | 101 | 100 | 011 | 010 | 001 | 000 |
|---|---|---|---|---|---|---|---|---|
| новый бит | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
Видно, что центр не важен: новый = левый XOR правый. Крайние столбцы поля не пересчитываются (остаются «0»). Пример — сид «1», N = 4, поле шириной 9:
строка 0: 000010000 строка 1: 000101000 (x=3: Л=0, П=1 → 1; x=4: Л=0, П=0 → 0; x=5: Л=1, П=0 → 1) строка 2: 001000100 строка 3: 010101010
«Обрезать фон» (галка стоит по умолчанию): в каждой строке всё левее первой «1» и правее последней «1» становится пробелом. Нули ВНУТРИ остаются. Получается треугольник, «висящий в пустоте»:
| 1 | | 101 | | 10001 | | 1010101 |
«Вживить в центр»: если на холсте уже есть текст, фигура не заменяет его, а вклеивается в середину — переносятся только непробельные символы. Без галки (или на пустом холсте) фигура становится всем текстом. Треугольник на 1024 строки — это N = 1024: ширина 2049, вершина — середина первой строки.
2. Аниматрица — волна сверху вниз
Строка 0 не меняется никогда. Волна идёт вниз по одной строке за шаг: на шаге k строка k+1 переписывается по строке k — уже переписанной на прошлом шаге. Клетка за клеткой, в одном столбце, без соседей (сверху — a, снизу — b):
| сверху a | пробел | символ | пробел | символ | символ |
|---|---|---|---|---|---|
| снизу b | пробел | пробел | символ | тот же | другой |
| станет | пробел | a | b | пробел | a (верхний) |
«0» здесь — тоже символ, пустота — только пробел. Когда волна доходит до низа — это проход (счёт «пройдено циклов» у Аниматрицы). После каждого прохода весь текст сравнивается по отпечатку со всеми прежними: совпал — найден 🔁 цикл, его период и с какого прохода он начался.
Операция волны (выбор под галкой, v0.023). Таблица выше — XOR по «символ есть / пусто». Можно взять другую: XNOR — тоже цикл, но из двух пробелов делает «1», и фон вокруг треугольника зажигается через проход; NAND и NOR — долгий разгон (до сотни проходов), потом мигание с периодом 2; AND — строка становится AND всех строк над ней и за один проход замирает (на сцене «1» остаётся один центральный столбец); OR — то же, но заливает. Цикл дают только XOR и XNOR: только у них по верхней клетке и новой нижней восстанавливается старая, остальные стирают сведения. Смена операции начинает счёт циклов заново.
Пример — треугольник выше. Проход 1: строка 1 = f(строка 0, строка 1) и т.д.:
столбец 3: сверху « », снизу «1» → «1» столбец 4: сверху «1», снизу «0» → «1» (разные символы — верхний) столбец 5: сверху « », снизу «1» → «1» итог строки 1: « 111 »
начало
1
101
10001
1010101
проход 1
1
111
11111
11 1 11
проход 2
1
1 1
1 1 1
1 1
проход 3
1
111
11 11
111 111
проход 4
1
1 1
1 1
1 1 1 1
проход 5
1
111
11111
11 1 11
В этом примере «0» исчезли уже на проходе 1: у «1» над «0» результат «1», у «0» над «0» — пробел, и нулей не осталось. Пока нули есть, правило — не чистый XOR. Когда в каждом столбце остаётся один символ, правило становится чистым XOR по наличию: клетка есть, если есть ровно одна из двух. Один проход — это «накопленный XOR» сверху вниз по каждому столбцу, столбцы живут независимо. Проход 4 — классический треугольник Серпинского (Паскаль по модулю 2), проход 5 повторил проход 1: период 4, разгон 1. При одном символе в столбце период — всегда степень двойки, не больше ближайшей степени двойки ≥ числа строк (у 1024 строк — до 1024). На больших треугольниках нули живут дольше и разгон длиннее: у правила 90 на 64 строки (проверено здесь, «▶ По кадрам») цикл начинается с прохода 33, период 64. С «0» и «1» вперемешку метки едут поверх того же XOR-узора (разбор — в борт-журнале и на странице «Исследование»).
Протекание (слои на гранях в «🗻 3D»). Течёт только вниз и только по своему столбцу: «1» над «0» даёт «1»,
«0» над «1» — «0», одинаковые гасят друг друга, символ над пустым протекает в него. «0» течёт только в разгоне — цикл
начинается ровно с гибелью последнего нуля. Самая верхняя «1» столбца — вечный родник: над ней всегда пусто.
Одна «1» над пустым столбцом через k проходов стоит на глубине d ⇔ d & (k−1) = 0. На проходе 2^m + 1 это
сплошные блоки высотой 2^m через такие же пустые — отсюда полосы-слои. Ось треугольника — чистый родник
(подробно — «Исследование», раздел 13).
Что получилось — готовым к просмотру: страница «Битмультфильмы» (кнопка Results в хабе) — весь цикл 1024 строк анимацией, все ромбы цикла по семи размерам, законы и картинки с короткой подписью; разбор каждого — в «Исследовании».
3. Ромбы — откуда они и как считаются
◇ Сетка проводит диагонали под 45° от вершины (середины первой строки) через каждые S символов. Ромб высотой S — клетки между ними: строки r…r+S, в строке r+d — от c−w до c+w, где w растёт до середины и убывает. Вершины ромбов идут через S/2 строк, в ряду — через S столбцов. Почему кадры собраны из ромбов: кадр через k проходов — XOR копий начального кадра, сдвинутых на все d, у которых нет общих единиц с k−1 (теорема Лукаса); каждый нулевой разряд 2^j в k−1 добавляет копию со сдвигом 2^j и ромбы этого размера (◇ «авто» рисует их все).
◭ Треугольники-копии (галка в «👁 Вид»): те же ромбы, только видна их общая грань. В чистой фазе проход — накопленный XOR по столбцу, и кадр через k проходов от начала цикла — XOR копий кадра начала цикла, сдвинутых вниз на d строк, где d & (k−1) = 0. Каждая копия — треугольник: вершина на оси в строке d, стороны под 45° до основания. Пример: 1024 строки, k−1 = 1011111111 — нулевой один разряд 256, копия одна: треугольник от строки 256. k−1 = 1001111111 — разряды 256 и 128: копии 128, 256 и 384 (пунктир — сумма разрядов). Цвет — по старшему разряду сдвига.
▲▼ и ⧗ («Единица разбора» в «👁 Вид»): ромб, разрезанный горизонтальной диагональю, — это ▲ сверху и ▼ снизу. Так весь треугольник режется без остатка на полосы высотой S/2: в полосе n — n+1 треугольников ▲ и n треугольников ▼; ▲ последней полосы — края у основания, у них нет пары ▼ (ромб не целый), и сводка считает, повторяют ли они ▲ выше. ⧗ часы — ▼ над ▲, склеенные вершиной: ромб склеен из ▲ и ▼ ребром, часы — вершиной, там, где сходятся два ромба.
◆ Пирамиды: вершина — центр часов, смотрим сверху. Основание — квадрат 2h+1 × 2h+1 клеток вокруг узла, рёбра — диагонали сетки, четыре грани: сверху ▼ часов, снизу ▲ часов, слева и справа — половинки ромбов остриём к вершине. Соседние пирамиды перекрываются (половинка ромба — грань двух пирамид). Грани сравниваются, как при обходе кругом: каждая повёрнута к верхней стороне; сводка считает пирамиды с четырьмя одинаковыми гранями и с двумя парами.
🗻 3D: пирамиды с вершинами в узлах одной чётности (решётка А — вершины в строках 0, S, 2S…, Б — со сдвигом на полшага) ложатся основаниями встык, и кадр становится полем пирамид. Проекция каждой грани на землю — ровно тот кусок текста, что виден сверху, поэтому «⊙ сверху» даёт тот же рисунок, что на холсте. Можно смотреть и одну пирамиду, выбранную в «🔍 Крупно». ⧫ Зеркало: под каждой пирамидой — её отражение вершиной вниз, вместе октаэдр, как знак Zerkalius; снизу та же картина с битами 0 ↔ 1 (как в «Октаэдре»), или пусто ↔ символ, или без инверсии; «⊖ снизу» — заглянуть. 🎞 GIF цикла / ⏺ Видео цикла — поле «дышит» весь период: кадр за проходом (шаг — «каждый N-й» у 🎞 GIF), при «вращать» — один оборот.
◆ Гранидус (кнопка в «🔍 Крупно»): выбранная пирамида уходит в «Гранидус» большим знаком. На грани берутся клетки одной чётности — в ряду r от вершины их r+1, как у грани «Октаэдра» (треугольник Паскаля); «1» — единица, прочее — ноль. Восточная, южная, западная и северная грани встают по кругу; низ октаэдра — та же картина инвертированная.
🎞 Фильмы: у каждого места треугольника — свой фильм, ряд его рисунков по проходам; окно считает его период (через сколько проходов место повторяется) и число разных кадров. Ходы — тот же рисунок на следующем проходе в соседнем месте: «качели» (туда-обратно) и «бег». Бега нет: волна пересчитывает каждый столбец сам по себе, и вбок рисунку сдвинуться нечем — рисунки стоят или меняются на месте.
🔎 Слова: буквы фигур читаются строками — ряды, стороны треугольника (у ромбов), по желанию справа налево. Словарь — русские словоформы из строк интерфейса Windows (как Swtchr собирал свои тройки букв); ищутся слова, сочетания (словарные слова встык) и «почти слова» — куски, которые по тройкам букв Swtchr звучат по-русски не хуже словарных. Буквы — имена форм по частоте, так что находка — совпадение, как слово в номерном знаке.
⊕ Отражение по горизонтали (в «🔍 Крупно» и в сводке): нижняя половина ромба ▼ переворачивается через горизонтальную диагональ и ложится на верхнюю ▲ (у часов — нижний ▲ на верхний ▼), обе складываются правилом волны: одинаковые — пробел, символ и пробел — символ, разные — верхний. Пустой XOR значит, что фигура симметрична сверху вниз.
◇ Сводка ромбов: для текущего кадра — сколько целых ромбов, сколько разных рисунков, сколько букв (одинаковые — одна буква, зеркальный слева направо — та же строчной; буквы по частоте, А — самая частая) и буквы на своих местах. «▶ По кадрам — весь цикл» гонит волну на копии до повтора текста и даёт две таблицы: по кадрам (проход · ромбов · разных · новые формы · состав) и по формам (рисунок · впервые · на каких проходах). В цикле буквы — по первому появлению, поэтому они не совпадают с буквами кадра.
🔍 Ромб крупно: «🎯» и щелчок по треугольнику (или Alt+щелчок) — ромб под курсором, размер как в сводке. В окне он живьём, крупно; на холсте — белой рамкой, такие же — голубым, зеркальные — розовым. Лента ниже копит его разные состояния на границах проходов, с номером прохода; 🎞 — GIF этого ромба по проходам.
Zerkalius Треугольник — как пользоваться
Машина берёт текст (по умолчанию — собственный исходный код страницы) или двоичные строки и гонит их кадр за кадром по холсту: сдвигает, отражает, сравнивает строку с соседями и подсвечивает то, что меняется. Смотреть можно как ленту, как цилиндр, как спираль радара. Всё, что на холсте, можно записать в видео.
С чего начать
- Первый раз страница открывается сразу играющей: сцена «Код Матрицы», радар и реверс включены, рамка выключена. Дальше F5 и повторное открытие возвращают всё как было: текст, вид, галочки, цвета, сцену и кадр плеера.
- Щелчок по холсту — пауза / продолжить. Двойной щелчок или щелчок колесом — режим Дзен (только картинка, без панелей).
- Колесо мыши над холстом — масштаб. Перетаскивание — сдвинуть картинку.
- Свой материал: вкладка 📂 Файл → «📂 Текст» (файл .txt) или выбрать готовую сцену в «📍 Карта Сокровищ».
Вкладки
Полоса вверху — вкладки, как в Layers. Каждая показывает или прячет свой раздел; подсвеченные открыты. Левые разделы стоят в левой панели, правые — в правой; если все разделы панели спрятаны, панель исчезает. Какие вкладки закрыты, браузер запоминает.
Разделы перемещаются. Возьмите раздел за шапку (значок ✥ и название) и тащите: над панелью он встанет между другими разделами, там где курсор, — можно и в соседнюю панель; мимо панелей — повиснет на холсте отдельным окном, которое тоже двигается за шапку. ⧉ в шапке открывает раздел в отдельном окне браузера — его можно унести на другой монитор; 🗻 3D там растягивается на всё окно. Вернуть — ↩ в шапке или просто закрыть окно. ✕ в шапке прячет раздел. ↺ на полосе вкладок поочерёдно открывает все разделы и оставляет только ▶ Плеер; Shift+↺ возвращает раскладку по умолчанию (все разделы открыты, плеер окном внизу по центру). Раскладку браузер запоминает.
- 📂 Файл
- 🧽 очистка холста; сцены — выбрать из списка (готовая сцена ставит ВСЁ своё: масштаб, интервал, галочки, 🔃 — с чистого листа) и «💾 Сохр.» текущий вид как свою (★ — полный пресет: текст холста, вид, галочки, скорость, цвета, радар, рамка, кадр; ★ из версий до 35.45 помнят только настройки); ▶ рядом со списком включает выбранную сцену, в том числе ту, что в нём уже стоит; «📤 Сцены в файл» — все ★ одним файлом .json (с текстами), «📥 Из файла» (или бросить этот файл на холст) — добавить их на другом компьютере, свои не затираются; «📂 Текст» — загрузить .txt (или просто бросить файл на холст; брошенный звуковой файл встаёт треком); «🎵 Трек» — музыкальный файл; «🎤 Звук ПК» — захват звука вкладки/экрана (в окне выбора поставить галочку «звук»); «💾 Сохр.» — выгрузить строки; «📊 в Excel»; «Сетка» — включает и выключает отдельный слой-фон: шахматку 1010 на весь холст позади строк, с тем же шагом, что у символов; под 🛰️ радаром — кольцами, по тем же окружностям, что и строки. На мелком масштабе (символ меньше 5 px) — по пикселям: «1» ярко, «0» тускло. Строки и «Экран» она не трогает.
- 🔊 Звук
- Визуализатор (картинка пульсирует от баса), 🤖 Авто-пилот (сам меняет сцены), Каскадное эхо (шлейф); «Вставить 0 / 1», «Заполнить 1010» — правка строк.
- 🔺 Формы
- Генератор: правило клеточного автомата (90, 30, 110, 18, 150) или фигура (Воронка, Зиккурат, Орбитальный конус, Диагональная сетка), сид и число строк → «Создать фигуру». «Вживить в центр» — фигура встаёт внутрь текущей матрицы, а не вместо неё.
- 🧬 Слои
- Dual Core: второй слой поверх первого со своей скоростью; XOR-линза; ⚓ заморозить первый слой.
- ▶ Плеер
- ◀ шаг назад, ▶ / ⏸ старт-пауза (мигает, пока идёт), ■ стоп и сброс (первая строка — в центре экрана), ⤒ или клавиша Home — к началу: пауза, первая строка текста у верхнего края экрана, ▶▶ шаг вперёд. «Кадр» — перемотка. Скорость: красный ползунок — сколько шагов за тик (x1…x100), синий — пауза между тиками (правее — быстрее).
- ↕ Движение
- Алгоритм Y-сдвига (например «1, 1, 2, -3»), заморозить вертикальную прокрутку, 3D-вращение, 🫁 дыхание (авто-масштаб).
- Δ Логика
- «Скрыть статику» — гасит символы, которые не изменились относительно соседа (сверху, по диагоналям или по Серпинскому). Логическая операция над строкой: NOT, XOR со сдвигом, зеркало. Аниматрица (волна; внизу холста, над строкой сообщений, — сколько раз волна прошла текст и на какой она строке, а когда текст повторит прежнее состояние — «🔁 цикл» и его период в проходах; «⏺ Журнал» под галкой пишет весь текст при старте и после каждого прохода, с отпечатком, числом изменившихся символов и циклом, «💾 Журнал в файл» отдаёт его файлом .txt — точнее любого видео; ⏮ / ⏭ Цикл (PageUp / PageDown) — назад и вперёд сразу целым проходом волны, «Плеер — целыми циклами» — ▶ идёт цикл за циклом; ⧖ Зеркало — отразить половину текста через центр экрана (поворот на 180°) и сложить XOR с другой: «низ → вверх», «верх → вниз, в противостороны», «оба сразу»; меняет сам текст, ↶ отменяет; 🎞 GIF — анимация цикла прямо из страницы: кадр каждый 1-й, 2-й … 64-й проход, пока картина не вернётся к первому кадру; волна гонится на копии, холст не трогается), Ёлка и Цилиндр (круговой сдвиг), поиск диагоналей, неоновое свечение.
- 👁 Вид
- ◇ Ромбическая сетка, шаг «авто» — сама рисует все размеры ромбов, включённые в текущем проходе (нули в двоичной записи k−1, k — проходов от начала цикла), каждый своим цветом, с легендой справа сверху. ⫼ Ось симметрии — вертикаль через вершину текста и живой процент зеркальности видимых строк. 🎨 Фон холста (раздел «Цвет») — цвет под текстом и сеткой, был всегда чёрный; прежняя строка «Фон» — цвет неизменившихся символов — теперь зовётся «Статика». 🎨 Сетка 0 / 1 — свои цвета «0» и «1» для слоя «Сетка» (шахматка за строками), во всех её видах: символами, пикселями на мелком масштабе и кольцами под радаром; без флажка — цвет Фона, как прежде; выбор цвета сам ставит флажок. Сетка всегда позади фигуры и на той же решётке, что текст; где бит фигуры лёг на символ сетки, они накладываются (что видно — решают цвета), а галка «Сетку под битами фигуры не рисовать» оставляет такую клетку фигуре целиком. «Сетка реже» — разреженность: ↔ пробелы между символами в строке (1 — «1 0 1 0»), ↕ пустые строки между строками сетки (1 — через строку); оставшиеся символы чередуются 1 и 0 шахматкой. 🎨 Фигура 0 / 1 — цвета битов самой фигуры (текста), не сетки; свои цвета для «0» и «1» на холсте по флажку, яркость остаётся от Δ; эти же цвета всегда берут 🎞 GIF, 🎞 Ромбы в кино и лист ромбов. 🔤 Буквы в ромбах — каждый ромб сетки подписан буквой: одинаковые ромбы — одна буква, зеркальный — та же строчной, буквы по частоте; цвет — ряд вдоль боковой стороны (вдоль стороны буквы складываются в повторяющиеся «слова» длиной 2, 4, 8…); справа сверху — сколько ромбов, разных и букв. 🎞 Ромбы в кино — GIF из ромбов сетки (размер — шаг сетки, при «авто» — 32): «ромбы кадра подряд» — все целые ромбы текущего текста по порядку; «верхний ромб по проходам» — один ромб от прохода к проходу, пока не вернётся к себе (волна на копии, холст не трогается); «все ромбы по проходам» — все ромбы сразу, разложенные на своих местах с зазорами, кадр за кадром, пока весь текст не вернётся к первому кадру (не больше 256 кадров); оба фильма по проходам берут шаг из «каждый N-й» у 🎞 GIF Аниматрицы; «все ромбы одной картинкой» — PNG, ромбы на своих местах в треугольнике, но раздвинуты с зазорами. 📦 Уникальные ромбы цикла — весь цикл волны на копии текста, ромбы каждого размера (8, 16, 32, 64…) — каждый размер в свой GIF; в GIF только разные ромбы, в порядке первого появления (словарь рисунков, сжатие — волна порвана), файлы скачиваются по очереди. 🎞 Все ромбы цикла подряд — то же, но с повторами: каждый ромб каждого прохода в порядке волны, в подписи — №рисунка из того же словаря, «новый» или «повтор» и проход, где он был впервые; кадров — сколько влезет (~120 МБ на размер, до 3000). ▤ Полосы периодов — строки тонируются полосами по степеням двойки (0, 1, 2–3, 4–7, 8–15…): в чистой фазе Аниматрицы у каждой полосы свой период волны, вдвое длиннее, чем у полосы над ней. ◇ Ромбическая сетка — диагонали под 45° от вершины текста через каждые 8 / 16 / 32 / 64 символа: на треугольниках Аниматрицы видно, что картина сложена из почти одинаковых ромбов-«кадров». Масштаб шрифта, «Экран» — сколько строк видно, интервал между строками, межсимвольный интервал (0.5–3: доля ширины символа; меньше 1 — символы наезжают), шрифт (13 на выбор, в том числе Roboto Mono, JetBrains Mono, VT323, Press Start 2P; лежат в самом проекте, работают и без интернета).
- 🎨 Цвет
- 🌈 радужный текст, 🎨 цвет как код (подсветка синтаксиса), пресеты палитры, цвет и яркость активных (изменившихся) и фоновых символов.
Кнопки у края холста
- 🎯
- Держать активную рамку по центру.
- 📌
- Прикрепить картинку к текущей строке и следить за ней.
- ▦ / 〰
- В строке ▶ Плеера. ▦ Скачки (так при открытии): при проигрывании строки прыгают на целую строку за шаг, а холст перетаскивается прыжками по клеткам «Сетки». 〰 Плавно: между шагами строки скользят от строки к строке, перетаскивание плавное.
- 🔃
- Реверс — движение в обратную сторону. Над ▶ Плеером — их дубли: 🔃 над левым углом, 🛰️ над правым (кнопки у холста остаются).
- 🔳
- Рамка прицела вокруг активной строки.
- 🛰️
- Радар: вид сверху, строки ложатся спиралью.
- |< >|< >|
- Выравнивание строк: влево и вправо — по видимому краю строки (пробелы по краям не в счёт, треугольник фрактала становится прямоугольным), по центру — как есть. Под 🛰️ радаром не действует, кнопки гаснут. Пресет ставит «по центру».
- ⏺
- Запись видео холста (вместе с треком). Во время записи мигает и обведена красным.
Включённая кнопка обведена кольцом.
Клавиши
- R
- начать / остановить запись видео
- H
- вернуться в Хаб
- Esc
- закрыть это окно