Я пытаюсь получить Delaunay Triangulation многогранника в python, чтобы вычислить центроид. Я вижу, что есть функция Delaunay в scipy.spatial
и что она работает в n-измерениях. Беда в том, что документация показывает 2D-использование и не дает мне никаких указаний на то, что делать с более высокими измерениями. Возможность разложить этот объект в массив, вероятно, решит эту проблему для меня, но я не знаю, как это сделать.Delaunay triangularization of Polyhedron (Python)
Проблема, с которой я столкнулся, заключается в том, что я не знаю, как проверить правильность работы, поскольку она выводит объект. Я ничего не могу найти в Google о том, как графовать многогранник или как использовать этот объект, который scipy плюет назад.
Если я
import numpy as np
from scipy.spatial import Delaunay
points = np.array([[0,0,0],[1,0,0],[1,1,0],[1,0,1],[1,1,1],[0,1,0],[0,1,1],[0,0,1]])
Delaunay(points)
Я действительно просто хотел бы быть в состоянии получить обратно координаты этих тетраэдров, так что я могу вычислить центроиды многогранников. Было бы также очень приятно, если бы мне удалось графически изобразить и тесселированный многогранник. Я видел в MATLAB, что я могу сделать это с помощью fuction, называемого trimesn, и я нашел его от matplotlib, но, похоже, он действительно отличается, и его документация невелика.
from matplotlib.collections import TriMesh TriMesh.__doc__
u'\n Class for the efficient drawing of a triangular mesh using\n
Gouraud shading.\n\n A triangular mesh is a
:class:`~matplotlib.tri.Triangulation`\n object.\n '
Вам не нужно триангуляции Делоне для вычисления центроида. Вы можете вычислить соответствующую взвешенную сумму центроидов тетраэдров. –
Как получить тетраэдры? В этом конкретном случае это просто, но для произвольного гексаэдра? –
Я расширил свой комментарий до ответа. –