Я предполагаю, что лучший ответ на этот вопрос требует использования VoronoiDelaunay.jl
, но я также открыт для других пакетов / подходов.
Если у меня есть набор точек в 2D (или 3D? Хотя я не уверен, что это возможно с пакетом VoronoiDelaunay.jl
), каков самый быстрый способ получить каждого из их ближайших соседей в смысле тесселяции Вороного (например, соседей в «первой оболочке Вороного»)? Я также не совсем уверен в математике, лежащей в основе этого, или в том, как это связано с триангуляцией Делоне.
Структура данных не имеет большого значения для меня, но давайте просто предположим, что данные хранятся в 2D-массиве введите Array{Float64,2}
, называется my_points
, размер которого равен (nDims, nPoints),
, а nDims
- 2 или 3, а nPoints
- количество точек. Скажем, я хочу, чтобы на выходе был какой-то список краев, например, массив массивов с именем edge_list
(Array{Array{Int64,1}}
), где каждый элемент i
из edge_list
дает мне индексы тех точек, которые являются соседями Вороного точки фокусировки i
(координаты которой хранятся в my_points[:,i]
).
For every point (point in the red tessellation), I want the coordinates / identities of the points that are its Voronoi neighbors (the points in the orange tessellations). This image is taken from Figure 1b of this paper: https://journals.plos.org/ploscompbiol/article?id=10.1371 / journal.pcbi.1002678