J'ai deux tableaux numpy, l'un pour les sommets 3D d'un maillage, je l'appelle vert
et un autre pour les faces triangulaires, que l'on appelle faces
:
El vert
est un N x 3
tableau de formes de float
donc N points tridimensionnels. Le site x
Les coordonnées de chaque point peuvent avoir des valeurs positives et négatives. A titre d'exemple pur, cela peut être le vert
le tableau :
[[ 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]]
Comme la maille est centrée, le gauche est celle dont la composante x est positive et les indices des sommets correspondants sont trouvés par une fonction np.where
i_vert_left = np.where(vert[:,0]>0)[0]
Je voudrais maintenant filtrer les faces constituées de triangles dont les coordonnées sont entièrement dans le positif. x
axe.
Cependant, j'ai un problème en faisant cela indexation fonctionnement correct. Ma première tentative a été de sous-ensembler les faces de telle sorte que les sommets correspondants ont x>0
faces_left = np.asarray([f for f in faces if np.all(np.isin(i_vert_left,f)) ])
mais l'opération est incroyablement lente sur les grandes mailles. Comment puis-je exploiter une indexation intelligente des faces ?