Ear clipping обогнал Delaunay в шесть раз на 3,7 миллиона полигонов карты
Триангуляция Delaunay в картографическом рендерере тратила 2,93 секунды на один уровень масштаба Мазовецкого воеводства; замена укладывается в 489 мс.
Автор написал earstrip — заголовочный файл C++ со сборкой для WebAssembly. К ear clipping он добавил быстрый путь для выпуклых полигонов, вывод полос и подсчёт без ветвлений. В нативной сборке это примерно на 14% быстрее earcut.hpp.
Полигоны, которые касаются сами себя, и полигоны с 128 и более дырами переходят на Delaunay.
От 2,93 с до 489 мс

В статье разбирается 3 740 425 полигонов на уровне масштаба 13, где существующая ограниченная триангуляция Delaunay заняла 2,93 секунды. Наивный ear clipping занял 1 119 мс; проверка только reflex-вершин сократила это до 882 мс, а финальная версия дошла до 489 мс. Пакет выпущен как earstrip под лицензией ISC. В браузерах он в 1,4–2,1 раза быстрее earcut.js. На мировых тайлах с дырами (до 11 675 штук) — 459 мс против 2 892 мс у earcut.hpp.
Компромисс — качество треугольников: треугольники Delaunay подходят для интерполяции, а для сплошной заливки они не нужны.
Автор earcut вступает в обсуждение
«Мне пришлось намеренно отказаться от некоторых возможных оптимизаций, чтобы библиотека оставалась маленькой и размер бандла не разросся» — автор Earcut, инженер Mapbox и создатель Leaflet
Другой комментатор спросил, почему ear clipping быстрее метода трапеций Зайделя, у которого почти линейная сложность и который естественно справляется с дырами.
«Я знаю, что O-большое — не всё, но это по сути линейное против квадратичного» — комментатор, спрашивающий о методе Зайделя
Около 1,8 миллиона тестовых полигонов имеют четыре вершины или меньше, поэтому быстрый путь для выпуклых фигур применим примерно к половине входа.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Это последняя новость выпуска 23 октября 2026.
Перейти в архив выпусков