Проверьте, заполнена ли трехмерная сетка сверху вниз - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть 3D-сетка для представления фигур / сеток, которая представлена ​​в python с использованием ndarray (20,20,20) типа bool. Каждый элемент в сетке представляет наличие или отсутствие материала. Я хочу иметь возможность проверить, представляет ли данная сетка фигуру, которая соединена на всем пути от вершины сетки к основанию. Я хочу иметь возможность отбрасывать те, которые либо отключены, либо не занимают непрерывную серию ячеек от верхней части сетки до нижней.

На более позднем этапе я преобразую сетки в сетки, используя trime sh. Есть ли способ идентифицировать вышеупомянутое или непосредственно в python или через триме sh?

1 Ответ

0 голосов
/ 03 апреля 2020

Сначала я напишу вспомогательную функцию bucket_fill_2d(), которая берет фрагмент с информацией material и, учитывая начальный индекс (i,j), заполняет материал, как в любой старой программе рисования.

  1. Введите пустой логический массив connected фигуры.
  2. Установите нижний срез True, где нижний срез массива material равен True.
  3. Затем go на один шаг вверх и bucket_fill_2d(), начиная с каждого connected (i,j) с предыдущего шага.
  4. Повторяйте (3), пока не достигнете вершины.
  5. Проверьте, есть ли что-либо connected на верхнем срезе.

Обратите внимание, что trime sh, как следует из названия, поддерживает только tri angular ячейки.

...