У меня есть два пустых массива, один для трехмерных вершин сетки, назовите его vert
, а другой для треугольных граней, назовите его faces
:
Массив vert
представляет собойN x 3
массив формы float
, следовательно, N трехмерных точек.Координата x
каждой точки может иметь как положительные, так и отрицательные значения.В качестве чистого примера это может быть массив vert
:
[[ 2.886495 24.886948 15.909558]
[ -13.916695 -58.985245 19.655312]
[ 40.415527 8.968353 8.515955]
...
[ 13.392465 -58.20602 18.752457]
[ -12.504704 -58.307934 18.912386]
[ 13.322185 -58.52817 19.165733]]
Так как сетка центрирована, то левая часть сетки - это та, которая имеет положительный компонент x и соответствующую ейиндексы вершин находятся по np.where
i_vert_left = np.where(vert[:,0]>0)[0]
Теперь я хотел бы отфильтровать грани, сделанные из треугольников с координатами полностью по положительной оси x
.
Однако у меня естьпроблема в правильном выполнении этой операции indexing .Моя первая попытка заключалась в том, чтобы установить грани таким образом, чтобы их соответствующие вершины имели x>0
faces_left = np.asarray([f for f in faces if np.all(np.isin(i_vert_left,f)) ])
, но операция на больших сетках невероятно медленная.Как я могу использовать умную индексацию лиц?