4

図に示すように番号が付けられたノードを表す規則的な行列を考えてみましょう。

ノードと三角形

図に示されているすべての三角形のリストを作成したいと思います。これは、次の 2 次元リストになります。[[0,1,4],[1,5,4],[1,2,5],[2,6,5],...,[11,15,14]]

Nr行列の次元が ( X ) (この場合は (4X4) )であると仮定するNcと、次のコードでこの結果を得ることができました。

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 を使用する方法はありますか?

4

2 に答える 2