Как строится узор
Все картинки ниже построены тем же кодом, который строит настоящие панели. Подчёркнутые пунктиром термины раскрываются при наведении.
1. Случайный разброс точек
Основа узора — случайные точки, набросанные методом Пуассона: кандидаты бросаются наугад, но тот, что оказался ближе минимальной дистанции к уже принятым (пунктирная окружность), отбрасывается (красный крест). Получается «случайно, но равномерно» — без слипшихся пар и больших дыр.
Затем один проход релаксации Ллойда: каждая точка чуть сдвигается в центр тяжести своей ячейки — той области, которая достанется ей на шаге 4 и в итоге станет окном панели. Узор становится ровнее, оставаясь случайным.
2. Поле треугольников
Соседние точки соединяются в треугольники — это триангуляция Делоне. Она отвечает на вопрос «кто чей сосед»: ребро между двумя точками означает, что их будущие ячейки будут граничить друг с другом.
3. Свойство Делоне: пустая окружность
Из всех способов соединить точки в треугольники Делоне выбирает единственный, при котором внутрь описанной окружности любого треугольника (пунктир) не попадает ни одна другая точка — они могут лежать только снаружи. Благодаря этому треугольники максимально «правильные», без длинных игл, а узор из них — спокойный и равномерный. Это свойство ещё пригодится во вставке А.
4. Серединные перпендикуляры — Вороной
Диаграмма Вороного двойственна Делоне: через середину каждого ребра треугольника (розовый пунктир) проходит серединный перпендикуляр (жирное зелёное ребро), а встречаются перпендикуляры в центрах описанных окружностей. Каждая точка получает ячейку — множество мест, откуда именно она ближайшая.
Генератор строит ячейку без явной триангуляции: перпендикуляр делит плоскость на две половины — «свою» (ближе к нашей точке) и «чужую». Берём целый лист и для каждого соседа отрезаем чужую половину; что осталось — и есть ячейка. Результат в точности совпадает с классической схемой через Делоне.
5. Рёбра превращаются в перемычки
Ребро Вороного — граница между двумя ячейками, и проходит она ровно посередине между их точками. Теперь отодвинем каждую границу внутрь обеих ячеек на половину ширины перемычки: скажем, при перемычке 4 мм — на 2 мм в каждую сторону. Ячейки сожмутся (пунктир — их прежние границы), а между окнами останется полоска материала постоянной ширины. Углы окон скругляются.
Вокруг каждого паза из окон дополнительно вычитается овальный прилив (оранжевый пунктир на рисунке) — окна огибают отверстие по дуге, и вокруг него всегда остаётся стенка заданной толщины.
вставка АЗеркальные точки — между шагами 1 и 2
Эта вставка срабатывает сразу после разброса и релаксации точек, до построения треугольников и ячеек. Чтобы перемычка гарантированно прошла через каждое skadis-отверстие, ближайшая к пазу случайная точка (розовая) отражается через его центр — в набор добавляется зеркальная (голубая). Серединный перпендикуляр пары проходит точно через центр паза — под случайным углом, своим у каждого отверстия, поэтому решётка отверстий не проступает в узоре.
Почему это ребро обязательно появится в диаграмме? Окружность с центром в пазе, проходящая через обе точки пары (пунктир на рисунке), пуста: розовая точка была ближайшей к пазу, значит все остальные лежат дальше её радиуса. А по критерию пустой окружности из шага 3 такая пара обязана быть соединена ребром Делоне — «попасть в один треугольник без общего ребра» они не могут. Двойственное ребро Вороного при этом проходит через центр пустой окружности, то есть сквозь паз. Единственная лазейка — если позже добавленная зеркальная точка чужого паза окажется ещё ближе; такие редкие случаи ловит явная проверка контакта, и паз получает страховочный мост.
Галочка «Рёбра через случайную точку паза» сдвигает якорь отражения из центра в случайную точку внутри отверстия — ребро пересекает паз где-то сбоку или ближе к торцу, и узор становится живее. Гарантия сохраняется: ближайшая точка ищется не к центру паза, а к самому якорю, поэтому окружность вокруг него снова пуста и критерий Делоне работает как прежде.
вставка БТор 3×3 — режим для всех шагов
Это не отдельный шаг, а режим, в котором выполняются все шаги 1–5: перед любым построением каждая точка размножается восемью копиями со сдвигами ±W и ±H. Дистанции Пуассона и релаксация Ллойда меряются «с обёрткой» через край, а треугольники и ячейки строятся среди девяти копий — поэтому ячейка у края «чувствует» продолжение узора с противоположной стороны, и узор периодичен.
Окно, вышедшее за край, возвращается с противоположного тем же многоугольником, сдвинутым ровно на W, — срезы на краях совпадают идеально, и панель стыкуется сама с собой любой стороной. Решётка отверстий с шагом 40 мм кратна размерам панели, так что и пазы-половинки на краях складываются в целые.
Полный конвейер: 1 точки → А зеркальные точки → 2–4 Делоне и Вороной → 5 перемычки и приливы → мосты-страховки и нарезка по панели. И всё это — внутри Б: на торе, где у панели нет краёв.