Как найти всех соседей вершины в триангуляции Делоне? - PullRequest
0 голосов
/ 06 июня 2019

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

В любом случае, у меня есть два 2D-массива, ptsLeft и ptsRight, формы 2xN, которые содержат координаты точек x, y от двух камер. Я создал функцию триангуляции, которая взяла эти два массива и объединила их в координаты x, y и z и сохранила их в массиве 3xN, скажем, pts3. Я тогда сделал

tri = Delaunay(ptsLeft)

, который теперь можно использовать как:

pts3[:,tri[0,0]]

чтобы получить индекс первой точки в первом треугольнике.

Моя проблема в том, что мне нужно пройти через pts3 и для каждой вершины (pts3 [:, i]) мне нужно найти точки вершин, которые связаны с этой точкой, получить их индекс в три, чтобы я мог получить доступ к правильной точке в pts3 и немного посчитаем координаты x, y и z.

До сих пор я смотрел на Delaunay.vertex_neighbors_vertices, но на самом деле не было тонны документации, которую мне удалось найти, и в вышеупомянутом посте я не мог по-настоящему понять, как можно изменить код для работы с моей проблемой.

Edit: Чтобы объяснить немного больше, если у меня есть pts3, и это 3x5, то значение индекса столбца будет то, что будет храниться в tri. Поэтому мне нужно что-то вроде:

for v in range(pts3.shape[1]):
    # find v in tri
    # find all neighbors of v in tri

Принимает ли vertex_neighbors_vertices числовое значение таким же образом или это должен быть индекс, в котором оно встречается?

...