6

meshgrid() を使用して生成された 3D 座標のセットがあります。これらを3軸で回転できるようにしたいです。

メッシュグリッドを解き、各ポイントで回転を試みましたが、メッシュグリッドが大きく、メモリが不足しています。

この質問は、einsum() を使用して 2d でこれに対処しますが、3d に拡張するときの文字列形式がわかりません。

einsum() とそのフォーマット文字列に関する他のページをいくつか読みましたが、理解できませんでした。

編集:

メッシュグリッドの軸を X、Y、Z と呼び、それぞれの形状は (213、48、37) です。また、結果をメッシュグリッドに戻そうとすると、実際のメモリ エラーが発生しました。

ポイントごとの回転を行うために「解明」しようとしたとき、次の関数を使用しました。

def mg2coords(X, Y, Z):
    return np.vstack([X.ravel(), Y.ravel(), Z.ravel()]).T

次のように結果をループしました。

def rotz(angle, point):
    rad = np.radians(angle)
    sin = np.sin(rad)
    cos = np.cos(rad)
    rot = [[cos, -sin, 0],
           [sin,  cos, 0],
           [0, 0, 1]]

    return np.dot(rot, point)

回転後、ポイントを使用して補間します。

4

1 に答える 1