Snap rounding
Содержание
Введение
Snap rounding (фиксирование выравнивания) — это алгоритм, который восстанавливает топологию множества отрезков, координаты которого заданны с некоторой ε погрешностью.
Мотивация
Пусть у нас есть множество отрезков, чьи координаты были получены с некоторой абсолютной погрешностью. В такой структуре может быть нарушена топология, а это может повлиять на работу других алгоритмов над этой структурой.
Например, если у нас появилось ложное пересечение (рисунок 1) мы можем получить отрицательное "расстояние" до прямой, если ожидаем, что все точки лежат с одной стороны относительное неё. Ещё, из-за недостаточной точности, может быть нарушена замкнутость контура (рисунок 2), что приведёт, например, к неправильной заливки области в графическом редакторе.
Свойства
Пусть нам дано множество отрезков
, тогда полученный после выравнивания планарный граф должен обладать следующими свойствами:- Фиксированная точность координат: все координаты должны лежать в узлах некоторой ε решётки.
- Геометрическое подобие: суммой Минковского и квадрата со стороной ε. должен полностью лежать в области, полученной
- Топологическое подобие: Существует непрерывное преобразование в .
Алгоритм
Упрощение выравнивания
Замечания
Ссылки
- CGAL - 2D Snap Rounding
- Iterated snap rounding with bounded drift
- Efficient Snap Rounding with Integer Arithmetic
- An Intersection-Sensitive Algorithm for Snap Rounding