Я ищу, чтобы найти объединение двух многогранников произвольной размерности. Вот простой способ генерации выпуклых многогранников:
points = np.random.rand(n_vertices, n_dimensions)
hull = scipy.spatial.ConvexHull(points)
print(points, hull.simplices)
Тогда многогранник выглядит как точки и симплексы, например:
array([[0.62092, 0.82149, 0.23474, 0.56461],
[0.70291, 0.46087, 0.77879, 0.03314],
[0.92248, 0.46931, 0.84108, 0.85117],
[0.74662, 0.39989, 0.74759, 0.76127],
[0.90351, 0.70135, 0.16062, 0.79807]]),
array([[4, 3, 2, 0],
[1, 3, 2, 0],
[1, 4, 2, 0],
[1, 4, 3, 0],
[1, 4, 3, 2]])
Как вычислить объединение n-многогранников произвольного измерения? Я понимаю, что выходные данные могут быть вогнутыми, так что это не просто выпуклая оболочка их вершин.
Я пытался найти эту функциональность в shapely , polytope и Полилиб , но без радости.
Blender заботится о трехмерном корпусе, который выглядит следующим образом: