3

次のように、立体 3d で表示できる matplotlib で 3d プロットを作成できるようにしたいと思います。

ここに画像の説明を入力

左の画像のカメラは、右に対してわずかに平行移動しています。少し練習すれば、脳を騙して左目で左の画像を、右目で右の画像を見て、どの画面でも 3D を見ることができます。

とにかく、matplotlib の 3d プロットを 2 回表示して、1 台のカメラをわずかに移動できるようにしたいと考えています。データを翻訳するだけで、プロット自体をステレオで取得することができました。

from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(10,5))
axl = fig.add_subplot(1,2,1,projection='3d')
axr = fig.add_subplot(1,2,2,projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

axr.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
        linewidth=0, antialiased=False)
axl.plot_surface(X, Y-5, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
        linewidth=0, antialiased=False)
for ax in [axr,axl]:
    ax.set_zlim(-1.01, 1.01)
    ax.set_ylim(-10,10)
    ax.view_init(azim=10)
    ax.set_axis_off()

ここに画像の説明を入力

これで目的の効果が得られますが、立体 3D で軸自体も表示できるようにしたいと考えています。view_initAxes オブジェクトのメソッドを使用して、カメラの仰角と方位角を設定する方法しか見つかりません。カメラを翻訳する「良い」方法はないようです。

誰もそれを行う方法を知っていますか?

4

0 に答える 0