【问题标题】:Can Voro++ be used in 2D?Voro++ 可以在 2D 中使用吗?
【发布时间】:2012-07-22 04:37:56
【问题描述】:

我正在寻找 C++ 中的 Voronoi Tessellation 库,而 Voro++ 似乎完全符合要求。我需要某些东西 - 例如,轻松访问单元格本身的属性 - Voro++ 提供的非常好。然而,Voro++ 似乎是为 3D 工作量身定制的。是否可以在 2D 模式下使用 Voro++,如果可以,我该怎么做?

我认为只是在 3D 中做所有事情,但只有零 z 分量的点会起作用(只要“盒子”的 z 范围为 -0.5 - 0.5),但这似乎有点矫枉过正。

【问题讨论】:

    标签: c++ 2d voronoi


    【解决方案1】:

    您好,您可能想试试 Viennagrid,他们的源代码会生成各种类型的网格,包括 Voronoi 图。空间维度没有限制。该网站是

    http://www.iue.tuwien.ac.at/index.php?id=viennagrid

    最好的问候...

    【讨论】:

    • 这似乎很适合网格操作,但据我所知,它只存储每个 Voronoi 单元的区域及其与每个周围单元的“界面区域”。有没有办法提取单元格顶点的坐标?
    • 您好,每个单元对象都带有全局网格中顶点的索引,然后您可以使用该索引通过顶点/点对象获取全局网格中的坐标。如果我没记错的话,所有成员都是公开的。有一个小示例向您展示了如何为两个单元格网格执行此操作。祝你好运...
    【解决方案2】:

    这是一个老问题,但在联系该软件的作者后,他确认了一个 2d 版本,用于提高效率,正在使用命令通过 Subversion 制作

    svn checkout https://codeforge.lbl.gov/anonscm/voro/trunk
    

    如果您的粒子数

    z_min = -0.5; z_max = 0.5
    

    【讨论】:

      【解决方案3】:

      我建议你联系 voro++ 的作者。我和你有同样的问题,我直接联系他,他告诉我他正在做一个2D优化的版本,甚至给出了一个初步的代码版本来尝试。该代码运行良好。

      即便如此,作为另一种方法,您当然可以使用 3d 版本并将某个维度(假设 y)固定为长度始终为 1,然后您的所有卷和数据将需要(如果有的话)微不足道的缩放. 2d 定制版的优势主要在于速度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-12
        • 2013-01-09
        相关资源
        最近更新 更多