我正在寻找 C++ 中的 Voronoi Tessellation 库,而 Voro++ 似乎完全符合要求。我需要某些东西 - 例如,轻松访问单元格本身的属性 - Voro++ 提供的非常好。然而,Voro++ 似乎是为 3D 工作量身定制的。是否可以在 2D 模式下使用 Voro++,如果可以,我该怎么做?
我认为只是在 3D 中做所有事情,但只有零 z 分量的点会起作用(只要“盒子”的 z 范围为 -0.5 - 0.5),但这似乎有点过分了。
嗨,您可能想尝试 Viennagrid,他们的源代码生成各种类型的网格,包括 Voronoi 图。空间维度没有限制。该网站是
http://www.iue.tuwien.ac.at/index.php?id=viennagrid
最好的祝福...
这是一个老问题,但在联系了软件的作者后,他确认了一个 2d 版本,对提高效率很有用,正在通过 Subversion 使用命令制作
svn checkout https://codeforge.lbl.gov/anonscm/voro/trunk
如果您的粒子数 < 100000,您可以简单地使用 3d 版本,指定 az 坐标为零,容器高度为 1
z_min = -0.5; z_max = 0.5
我建议你联系 voro++ 的作者。我和你有同样的问题,我直接联系他,他告诉我他正在做一个2D优化的版本,甚至给出了一个初步的代码版本来尝试。该代码运行良好。
即便如此,作为另一种方法,您当然可以使用 3d 版本并将某个维度(假设 y)固定为长度始终为 1,然后您的所有卷和数据将需要(如果有的话)微不足道的缩放。2d 定制版的优势主要在于速度。