2015-03-27 3 views
1

У меня есть область, которая уже была разделена на десятки подрайонов (думаю, что страна разделена на государства).Разметка графика для определения точки

Теперь у меня есть координата точки, какой лучший алгоритм сказать мне, в каком состоянии указать точку?

Конечно, я могу подобрать суб-область по суб-области, но это глупо, потому что я должен искать половину из них в среднем праве?

Есть ли алгоритм для определения того, как группировать несколько смежных подсетей вместе, чтобы облегчить поиск, чтобы оптимизировать количество поиска?

+1

Как описываются границы подзоны? Вам нужен растровый или векторный подход? Сколько подрайонов, сколько вершин? –

+0

Границы описаны в координатах, поэтому существуют векторы. Под-области не являются исключительными и могут быть перекрыты, то есть некоторые могут включать в себя более мелкие – Gordon

ответ

1

Я бы начал с устранения всех областей, которые не могут иметь точку внутри них.

Предположим, что у вас есть двумерная декартова система координат, у вас есть точка как 2D-вектор, а области описываются как совокупность их граничных точек.

Затем вы можете отсортировать площади по их наименьшей и наибольшей координатам x и y (всего 4 способа сортировки). Вы можете устранить все области, которые имеют их наименьшее x координат больше, чем x координаты вашей точки и т.д.

После этого, вы можете проверить оставшиеся полигоны с простым ray-casting algorithm, и вы должны быть хорошо.

Это очень эффективно, если у вас есть структура, которая сохраняет области, отсортированные по всем направлениям, потому что вы можете устранить области в логарифмическом времени.

+0

Большое спасибо Мэтту, ваш путь намного проще. – Gordon

+0

Большое спасибо Мэтту, ваш путь намного проще. Есть ли у вас какое-либо понимание, если некоторые под-области действительно находятся в пределах более крупной суб-области? Должен ли я выбрать наименьший первый, наоборот или другие критерии, чтобы судить? – Gordon

+0

Ну, во-первых, вам нужно спросить себя, что на самом деле является областью для вас. Для меня, когда вы говорите об области, они не могут пересекаться. Немного похоже на карту, Монако не пересекается с Францией, но находится внутри Франции. Теперь, если у вас есть область внутри (полностью окружена) другой областью, тогда я думаю, что проще всего просто проверить как лучевое кастинг, так и подобное. –

Смежные вопросы