【问题标题】:Check if 3D grid is filled from top to bottom检查 3D 网格是否从上到下填充
【发布时间】:2020-07-15 01:42:01
【问题描述】:

我有一个用于表示形状/网格的 3D 网格,它使用 bool 类型的 ndarray(20,20,20) 在 python 中表示。网格中的每个元素代表材料的存在或不存在。我希望能够检查给定的网格是否代表从网格顶部一直连接到底部的形状。我希望能够丢弃那些断开连接或不占用从网格顶部到底部的连续单元格的那些。

在稍后阶段,我使用 trimesh 将网格转换为网格。有什么方法可以直接在 python 中或通过 trimesh 识别上述内容?

【问题讨论】:

  • 对角线算不算? 1 0 0 1, 0 1 1 0 这会连接吗
  • 是的,这很重要。任何形式的从上到下的连续连接。
  • 从上到下表示z轴,如第三个数组?我认为如果您以数据结构为例会有所帮助

标签: python mesh voxel trimesh


【解决方案1】:

我首先编写一个辅助函数bucket_fill_2d(),它使用material 信息获取一个切片,并且给定一个起始索引(i,j),桶像在任何旧绘图程序中一样填充材料。

  1. 引入一个空的布尔数组connected 的形状。
  2. material 数组的底部切片为 True 的任何位置设置底部切片 True
  3. 然后再上一步bucket_fill_2d(),从上一步的每个connected (i,j) 开始。
  4. 重复 (3) 直到到达顶部。
  5. 检查顶部切片是否有 connected

注意,trimesh,顾名思义,只支持三角形单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-17
    • 2021-10-30
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多