简体   繁体   English

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

[英]In CGAL, can one convert a triangulation in more than three dimensions to a polytope?

If this question would be more appropriate on a related site, let me know, and I'd be happy to move it.如果这个问题在相关网站上更合适,请告诉我,我很乐意移动它。


I have 165 vertices in ℤ 11 , all of which are at a distance of √8 from the origin and are extreme points on their corresponding convex hull .我在 ℤ 11中有 165 个顶点,所有这些顶点都与原点的距离为 √8,并且是它们对应的凸包上的极值点。 CGAL is able to calculate their d -dimensional triangulation in only 133 minutes on my laptop using just under a gigabyte of RAM. CGAL能够在我的笔记本电脑上使用不到 1 GB 的 RAM 在 133 分钟内计算出他们的d维三角剖分


Magma manages a similar 66 vertex case quite quickly, and, crucially for my application, it returns an actual polytope instead of a triangulation. Magma非常快地管理了一个类似的 66 顶点情况,而且,对于我的应用程序而言,至关重要的是,它返回一个实际的多面体而不是三角剖分。 Thus, I can view each d -dimensional face as a single object which can be bounded by an arbitrary number of vertices.因此,我可以将每个d维面视为单个 object 可以由任意数量的顶点限制。

Additionally, although less essential to my application, I can also use Graph: TorPol -> GrphUnd to calculate all the topological information regarding how those faces are connected , and then AutomorphismGroup: Grph -> GrpPerm, ... to find the corresponding automorphism group of that cell structure.此外,虽然对我的应用程序不太重要,但我也可以使用Graph: TorPol -> GrphUnd来计算有关这些面如何连接的所有拓扑信息,然后AutomorphismGroup: Grph -> GrpPerm, ...来找到相应的自同构组那个细胞结构。

Unfortunately, when applied to the original polytope, Magma's AutomorphismGroup: TorPol -> GrpMat only returns subgroups of GL d (ℤ) , instead of the full automorphism group G , which is what I'm truly hoping to calculate.不幸的是,当应用于原始多面体时,Magma 的AutomorphismGroup: TorPol -> GrpMat只返回GL d (ℤ)的子群,而不是完整的自同构群G ,这是我真正希望计算的。 As a matrix group, G ∉ GL 11 (ℤ), but is instead ∈ GL 11 (), where represents the algebraic numbers .作为一个矩阵群, G ∉ GL 11 (ℤ),而是 ∈ GL 11 (),其中表示代数数 In general, I won't need the full algebraic closure of the rationals, ℚ̅, but just some field extension.一般来说,我不需要有理数的完整代数闭包 ℚ̅,而只需要一些域扩展。 However, I could make use of any non-trivially powerful representation of G .但是,我可以使用G的任何非平凡强大的表示。

With two days of calculation, Magma can manage the 165 vertex case, but is only able to provide information about the polytope's original 165 vertices, 10-facets, and volume.通过两天的计算,Magma 可以管理 165 个顶点的情况,但只能提供有关多面体原始 165 个顶点、10 个面和体积的信息。 However, attempting to enumerate the d -faces, for any 2 ≤ d < 10, quickly consumes the 256 GB of RAM I have at my disposal.但是,尝试枚举d面,对于任何 2 ≤ d < 10,会很快消耗我可以使用的 256 GB RAM。


CGAL's triangulation, on the other hand, only calculates collections of d -simplices , all of which have d + 1 vertices.另一方面,CGAL 的三角剖分只计算d -simplices 的 collections ,所有这些单形都有d + 1 个顶点。 It seems possible to derive the same facial information from such a triangulation, but I haven't thought of an easy way to code that up.从这样的三角测量中得出相同的面部信息似乎是可能的,但我还没有想到一种简单的方法来编码。


Am I missing something obvious in CGAL?我在 CGAL 中遗漏了一些明显的东西吗? Do you have any suggestions for alternative ways to calculate the polytope's face information, or to find the full automorphism group of my set of points?您对计算多面体的面部信息或找到我的点集的完整自同构群的替代方法有什么建议吗?

You can use the package Combinatorial maps in CGAL, that is able to represent polytopes in nD.您可以在 CGAL 中使用 package组合图,它能够表示 nD 中的多面体。 A combinatorial map describes all cells and all incidence and adjacency relations between the cells.组合 map 描述了所有细胞以及细胞之间的所有关联和邻接关系。

In this package, there is an undocumented method are_cc_isomorphic allowing to test if an isomorphism exist from two starting points.在这个 package 中,有一个未记录的方法are_cc_isomorphic允许从两个起点测试是否存在同构。 I think you can use this method from all possible pair of starting points to find all automorphisms.我认为您可以从所有可能的起点对使用此方法来查找所有自同构。

Unfortunatly, there is no method to build a combinatorial map from a dD triangulation.不幸的是,没有从 dD 三角剖分构建组合 map 的方法。 Such method exists in 3D (cf. this file ). 3D 中存在这种方法(参见此文件)。 It can be extended in dD.它可以在 dD 中扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 CGAL - 如何使用CGAL :: Polygon_mesh_processing :: connected_components将一个CGAL :: Surface_mesh转换为多个? - CGAL - how to use CGAL::Polygon_mesh_processing::connected_components to convert one CGAL::Surface_mesh into many? 如何在 CGAL 中将三角测量对象(Constrained_Delaunay_triangulation_2)保存到文件(vtk、vtu、msh 等) - How to save triangulation object(Constrained_Delaunay_triangulation_2) to file(vtk, vtu, msh etc) in CGAL 在CGAL下,对于受约束的三角剖分,网格元素的顺序是否会因运行而变化? - Does ordering of mesh element change from run to run for constrained triangulation under CGAL? 如何将平面网格转换为CGAL中的排列 - how to convert planar mesh to arrangement in CGAL three.js 加载已经三角剖分的网格是否比使用四边形的网格更高效? - Is it more performant for three.js to load a mesh that's already been triangulated than a mesh using quads? CGAL:如何创建填充边界曲线的曲面网格? - CGAL: How can I create a surface mesh that fills a bordering curve? 如何使用CGAL撤消特定区域中的折叠边缘 - how can I undo the collapsed edges in a specific region using CGAL 如何使用CGAL简化3d网格的特定区域 - how can I simplify a specific region of 3d mesh using CGAL 如何比较3D向量相对于平面的三维方向 - How to compare the orientation of a 3D vector against a plane in three dimensions 三歧管的三角剖分 - Triangulation of a 3-manifold
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM