Скажем, у меня есть тетраэдр, построенный из треугольников (или граней), каждый треугольник содержит три вершины. Тетраэдер представлен следующим образом:
vertices = [[0. 0. 0.] [0. 1. 1.] [1. 0. 1.] [1. 1. 0.]]
faces = [[0 1 2] [0 2 3] [0 1 3] [1 2 3]]
Я хотел бы иметь структуру, которой я мог бы дать индекс вершины и которая могла бы эффективно вернуть мне грани, содержащие эту вершину. Это должно быть эффективно, так как мне нужно найти грани, связанные, например, с 1000 вершинами в файле с 20 000 граней. Таким образом, это должна быть какая-то структура данных, в которой элемент структуры представляет собой список граней, а индекс этого элемента равен индексу вершины, связанной с этими гранями.
Например: возврат индексов граней граней, соединенных с вершиной с индексом 1, должен выглядеть так:
vertex_index = 1
find_connected_faces[vertex_index] --> [0,2,3]
Ответ должен быть [0,2,3], так как в этих гранях присутствует вершина с индексом 1 ([0.1.1.]). Я борюсь с тем, как эффективно решить эту проблему. Я думал о графиках с использованием библиотеки networkx, но не нашел лучшего подхода. Я нашел много решений для поиска двух граней, соединенных ребром, но, как видите, это не совсем то, что я ищу.