在 CGAL 中,可以将超过三个维度的三角剖分转换为多面体吗?

问题描述

如果这个问题在相关网站上更合适,请告诉我,我很乐意移动它。


我在ℤ11中有165个顶点,所有顶点都在距离原点√8处,并且是它们对应的convex hull上的极值点。 CGAL 能够在我的笔记本电脑上使用不到 1 GB 的 RAM 在 133 分钟内计算出它们的 d-dimensional triangulation


Magma 非常快速地管理一个类似的 66 顶点情况,而且,对于我的应用程序至关重要,它返回一个实际的多面体而不是三角剖分。因此,我可以将每个 d 维的人脸视为单个对象,该对象可以由任意数量的顶点限定。

此外,虽然对我的应用程序不太重要,但我也可以使用 Graph : TorPol -> GrphUnd 计算 all the topological information regarding how those faces are connected,然后使用 AutomorphismGroup : Grph -> GrpPerm,... 找到该单元结构的相应自同构群。

不幸的是,当应用于原始多胞体时,Magma 的 AutomorphismGroup : TorPol -> GrpMat 只返回 GLd(ℤ) 的子群,而不是完全自同构群 G,这才是我真正的想法希望计算。作为一个矩阵群,G ∉ GL11(ℤ),而是 ∈ GL11(?),其中?表示{{ 3}}。一般来说,我不需要有理数的完整代数闭包ℚ̅,而只需要一些域扩展。但是,我可以使用 G 的任何非常强大的表示。

经过两天的计算,Magma 可以管理 165 个顶点的情况,但只能提供有关多面体原始 165 个顶点、10 个面和体积的信息。但是,尝试枚举 d 面,对于任何 2 ≤ d


Cgal 的三角剖分,另一方面,只计算 algebraic numbers 的集合,所有这些集合都有 d + 1 个顶点。似乎可以从这样的三角剖分中得出相同的面部信息,但我还没有想到一种简单的方法来编码。


我是否在 Cgal 中遗漏了一些明显的东西?对于计算多面体的面部信息或找到我的一组点的完整自同构群,您有什么建议吗?

解决方法

您可以在 CGAL 中使用包 Combinatorial maps,它能够表示 nD 中的多胞体。组合图描述了所有单元格以及单元格之间的所有关联和邻接关系。

在这个包中,有一个未公开的方法 are_cc_isomorphic 允许从两个起点测试是否存在同构。我认为你可以从所有可能的起点对使用这个方法来找到所有的自同构。

不幸的是,没有方法可以从 dD 三角剖分构建组合映射。这种方法存在于 3D 中(参见 this file)。它可以在 dD 中扩展。