使用 CGAL 的两个多面体相交的体积

问题描述

我正在寻找一种快速方法来计算两个多面体相交的近似体积。我的程序运行 20k 次迭代,其中每次迭代我需要计算两个多面体的差异体积,每个多面体都有 ~100 个顶点(这些多面体中的一个是静止的,另一个在每次迭代中改变它的姿势)。我要求这个程序在一秒钟内终止。

我曾尝试使用 Nef_polyhedron_3,但它需要一个精确的内核,因此需要大量时间。接下来,我尝试使用polygon_mesh_processing::corefine_and_compute_difference,但找不到将polyhedron_3 转换为Surface_mesh 的方法(不使用Nef_polyhedron)。

如果有人能帮助我解决这个问题,我将不胜感激。提前致谢!

解决方法

您可以尝试使用多边形网格处理包中的this faster function,然后使用that one来获取相交的体积。

如果仍然太慢,那么您可以使用 Monte Carlo 来估计体积,使用在静态多面体内采样的点。 This class 将有助于了解一个点是在有界体积的内部还是外部。

,

对于转换,您可以使用函数 copy_face_graph()