考虑一个表示节点编号的规则矩阵,如图所示:
我想用图中表示的所有三角形制作一个列表。这将导致以下二维列表:[[0,1,4],[1,5,4],[1,2,5],[2,6,5],...,[11,15,14]]
假设矩阵的维度是 ( Nr
X Nc
)(在这种情况下为 (4X4)),我可以使用以下代码实现此结果:
def MakeFaces(Nr,Nc):
Nfaces=(Nr-1)*(Nc-1)*2
Faces=np.zeros((Nfaces,3),dtype=np.int32)
for r in range(Nr-1):
for c in range(Nc-1):
fi=(r*(Nc-1)+c)*2
l1=r*Nc+c
l2=l1+1
l3=l1+Nc
l4=l3+1
Faces[fi]=[l1,l2,l3]
Faces[fi+1]=[l2,l4,l3]
return Faces
然而,双循环操作使这种方法相当缓慢。有没有办法以一种聪明的方式使用 numpy 来更快地做到这一点?