Изменения

Перейти к: навигация, поиск

Упрощение полигональной цепи

12 байт добавлено, 17:16, 12 мая 2012
Алгоритм Дугласа-Пекера
Начальная полилиния представляет собой упорядоченный набор точек.
Алгоритм рекурсивно делит ломануюполилинию. Входом алгоритма служат координаты всех точек между первой и последней включая их, а так же <tex>\varepsilon</tex>. Первая и последняя точка сохраняются неизменными. После чего алгоритм находит точку, наиболее удалённую от отрезка, состоящего из первой и последней (оптимальный способ поиска расстояния от точки до отрезка рассмотрен ниже). Если точка находится на расстоянии, меньше, чем <tex>\varepsilon</tex>, то все точки, которые ещё не были отмечены к сохранению, могут быть выброшены из набора, и получившаяся прямая сглаживает кривую с точностью не ниже <tex>\varepsilon</tex>.
Если же расстояние больше <tex>\varepsilon</tex>, то алгоритм рекурсивно вызывает себя на наборе от начальной до данной и от данной до конечной точек (это означает, что данная точка будет отмечена к сохранению).
По окончанию всех рекурсивных вызовов выходная ломаная итоговая полилиния строится только из тех точек, что были отмечены к сохранению.
===Псевдокод===
| <tex>9</tex> || Алгоритм завершен
|}
ЛоманаяПолилиния, полученная в результате работы алгоритма, отражается пунктирной линией.
Анонимный участник

Навигация