Да кажем, че имам тетраедър, който е изграден от триъгълници (или лица), всеки триъгълник съдържа три върха. Тетраедърът е представен по следния начин:
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, но не намерих най-добрия подход. Намерих много решения за намиране на две лица, които са свързани с ръб, но както виждате, това не е точно това, което търся.