3D(+) 凸多边形的 Minkowski 和

Minkowski Sum of 3D(+) convex polygons

我的目标是获得一个多面体的所有面的表示(以 A[x,y,z]'>b 的形式),这是两个凸多面体之间凸差的结果。意思是,找到所有平面的交点,这些平面是 P1 - P2 = { x - y | 的 Minkowski 差异的结果。 x \in P1, y \in P2 }.

我正在寻找已建立的库(Python?)或有关如何有效执行此操作的想法。我考虑过做一些类似于 GJK algorithm 的事情,但我需要所有的面孔,而不仅仅是快速计算原点是否在里面。此外,在 3D 或更高维度中以方法论方式使用此支持功能似乎效率低下。另外,假设我得到了顶点,我现在是否需要从它上面的两个向量与叉积形成平面方程,对于每个面,还是有办法从 Minkowski 和本身获得它? (记住需要更高的维度)。

好的,看来我终于能够解决它了,我发帖以防将来有人感兴趣:

首先,我 pip 安装了 pypoman library。 有了它,我们可以使用 compute_polytope_halfspaces(也就是多胞形的 H-representation)在顶点和面之间轻松移动。所以我从顶点得到表示 P_i: H_i x < h_i for i=1,2 (如果格式已经正确,则跳过它)。

现在如果我们设置 P_sum = {[x1;x2] \in R^2n | [H_1 0; 0 H_2] [x1;x2]' < [h_1,h_2]'},注意闵可夫斯基和等于 P1+P2 = [I,I] P_sum(这个想法来自 paper IV.B)。所以我可以使用 pypoman 的 project_polytope 函数在原始维度中获得 H_sum x < h_sum 的 Minkwoski 和。