Создайте 2d треугольники из 2d точек - PullRequest
9 голосов
/ 24 августа 2010

Мне нужно сделать 2d треугольники из списка 2d точек с условием: длина любого ребра не может быть больше, чем предопределенная константа.

Примерно так: alt text

Знаете ли вы какой-нибудь алгоритм, который может это сделать?Или какой-нибудь совет?

Спасибо!

Ответы [ 3 ]

7 голосов
/ 24 августа 2010

Попробуйте Триангуляция Делоне , затем удалите слишком длинные ребра.

Из вышеприведенной статьи вы увидите ссылку на страницу 2D-триангуляции CGAL .

2 голосов
/ 24 августа 2010

Сначала сгенерируйте все возможные ребра (т.е. соедините пару вершин, которые ближе, чем константа).Затем, когда два из них пересекаются, удалите один из них.Повторяйте этот шаг до тех пор, пока не будет пересечений.

Это решение довольно примитивно, возможно, возможно сделать это быстрее.

1 голос
/ 24 октября 2016

Мне нравится ответ svick -

при реализации я бы сделал следующее

  1. вычислить линии между каждой парой точек
  2. Сортировка списка по длине
  3. Удалить все строки длиннее вашего порога
  4. Продолжить вниз по списку (от самого длинного до самого короткого), если он пересекает другую строку, затем удалить его.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...