2016-09-30 6 views
0

Я ищу алгоритм, который может определить лучший угол (представляющий центр сектора круга), чтобы получить максимум точек в этом круге для заданного размера сектора ,Поиск максимума точек в заданном угле окружности

Пример:

enter image description here

  • Красный сектор (признать размер известен).
  • Зеленый - это угол, который я хочу найти.
  • Известны черные координаты точек.

Если я не объяснил правильно, спросите его. Спасибо за ваши ответы.

+0

Может ли «красный» двигаться? Или вы просто хотите «зеленый»? Я думаю, в любом случае все, что вам нужно сделать, это получить угол для каждой «черной» точки и отсортировать ее. Это действительно проблема 1D. Зеленый был бы срединным. Красный был бы источником диапазона с наибольшим количеством очков - просто тест, начинающийся с каждой точки (вероятно, есть лучшие способы, но это 1D) – starmole

ответ

0

Нет фиксированного количества секторов. Цель заключалась в том, чтобы найти сектор (по центру) заданного максимального угла, имеющего максимум точек.

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

  • с помощью atan2 получить углы для каждых точек
  • сортировки точек по углу
  • , связывающих точки, которые находятся достаточно близко, чтобы быть в максимальном угле сектора до точки проверки (с использованием двойного цикла)
  • , возвращающий угол точки с максимальным количеством связанных точек.

Пробовал быть ясным, но не очень простым. может опубликовать образец C++, если некоторые из вас заинтересованы.