Определение наиболее важных вершин 2D-многоугольника - PullRequest
0 голосов
/ 27 января 2020

Я искал известный алгоритм, который идентифицирует «наиболее релевантные» вершины 2D-многоугольника. Возможно, я использую неправильные ключевые слова (я пытался найти для меня sh алгоритмы упрощения), но я пока не нашел ничего полезного.

Я должен определить, что я имею в виду под "наиболее релевантным" "вершины с некоторым контекстом. Я хочу взять 2D-многоугольник, применить геометрическое преобразование и визуализировать предварительно преобразованные и пост-преобразованные полигоны с отображением между вершинами, чтобы визуализировать эффекты преобразования. Однако с небольшими высокодетализированными полигонами (большое количество вершин на область) существует много «визуальных помех».

Идея состоит в том, что должен существовать алгоритм, который мог бы определять, какие вершины будут подходить для отображения а какие не будут. Я могу разработать такой алгоритм, принимая во внимание две вещи:

  1. Длина края: игнорировать вершину, если длина между ней и предыдущей меньше порога. Аккумулятор понадобится, чтобы избежать игнорирования нескольких последующих вершин.
  2. Внутренний угол: игнорировать вершину, если внутренний угол в вершине выше порога. «Аккумулятор» был бы необходим, чтобы избежать игнорирования нескольких последовательных вершин.

Несмотря на то, что я, вероятно, могу реализовать такую ​​вещь, я не люблю изобретать велосипед и решил спросить вас, встречались ли вы что-то вроде этого, которое могло бы реально решить другие проблемы, о которых я не думал (например, сложные многоугольники).

1 Ответ

1 голос
/ 27 января 2020

Похоже, вы ищете алгоритм Ramer-Douglas-Peucker , который "упрощает путь", но может быть расширен для использования с полигонами. Он работает, начиная только с нескольких конечных точек, затем жадно добавляя обратно те вершины, которые необходимы для аппроксимации исходной формы в пределах определенного допуска. Существует множество других алгоритмов и эвристик, но ни один из них не имеет репутации надежного получения значительно лучших результатов, чем RDP, а RDP легко понять и реализовать.

...