Я имею дело с набором трехмерных фигур в формате .off (ModelNet10 http://3dshapenets.cs.princeton.edu/),, то есть у меня в основном есть доступ к массиву N x 3
для (x,y,z)
координат для вершин и другого N x 3
массив граней, говорящий мне, что грани [i,j,k]
принадлежат фигуре (100 i,j,k
- индексы вершин), в частности ребра [i,j], [i,k], [j,k]
принадлежат базовому графу (одномерный скелет).
IИнтересно, каков наилучший способ получить матрицу геодезических (кратчайших путей) расстояний с такими фигурами, по сути, используя Python3 (или другой стандартный язык, такой как C ++ или R, но тогда потребуется некоторая помощь). Здесь «лучший» в идеале означает «optmized для трехмерных треугольных форм ", но" это эффективно работает "также было бы удовлетворительным.
В настоящее время моя идея состоит в том, чтобы построить базовый (ненаправленный, взвешенный) график для данной формы. Тогда я мог бы использовать scipycsgraph (https://docs.scipy.org/doc/scipy/reference/sparse.csgraph.html). Это может звучать очень просто, но я пока не нашел библиотеки, которая бы делала это для меня. Я мог бы реализовать это сам, но мне нужно что-тонемного оптимизирован и предпочел бы полагаться на некоторый проверенный временем код.
Мои текущие попытки:
Использование PyMesh (https://pymesh.readthedocs.io/en/latest/) для загрузки моих файлов .off (получение двух N x 3
)массивы, упомянутые выше). Я думаю, что PyMesh предлагает способ просто построить соответствующий график, но пока не нашел его.
Еще одно испытание: использование гудхи (http://gudhi.gforge.inria.fr/python/latest/)которые позволяют загрузить симплекс_дерево (с dim = 1 в моем случае) из файла .off. Может быть простой способ построить матрицу (геодезических?) расстояний из этого (или прокормить scipy этим), но этомне тоже немного не по себе.
Возможно, что-то с networkx (https://networkx.github.io/documentation/stable/index.html), но, опять же, мне не ясно, как заставить эту библиотеку взаимодействовать с другими.
Конечно, может быть какая-то библиотека, о которой я не знаю, или которая могла бы хорошо взаимодействовать с вышеупомянутыми.
Спасибо!