在Python中使用Mayavi复制下图的摄影机角度

时间:2018-07-23 09:59:56

标签: python plot mayavi

下图显示了如何剪切框:

sheared box

我想按以下方式绘制数据(请注意,球体的坐标没有被剪切,即,球体位于完美的立方盒中)

spheres data

我已经使用mlab和以下代码实现了当前定位

# Achieve x-y view.
mlab.view(azimuth=0, elevation=0, distance=3.0)
# Rotate along x axis to expose part of the top of the box.
pts.actor.actor.rotate_x(30)
# Move camera down to compensate for rotation.
mlab.move(up=-0.37)

是否有一种方法可以通过暴露立方体的一些右侧,同时保持X轴完全水平,来使摄像机操纵起来,使数据看起来更像插图?

编辑:mlab.view(azimuth=0, elevation=0, focalpoint=[4, 4, 0], distance=30.0)产生了我想要的透视图。但是,我只能看到盒子朝侧面和远处。缩放相机会使框从图像中消失,因为它会放大到x, y, z = [4, 4, 0]点。有什么办法可以“放大”图片的相关部分?

enter image description here

1 个答案:

答案 0 :(得分:-1)

根据http://docs.enthought.com/mayavi/mayavi/auto/mlab_camera.html(函数“视图”),您可以使用方位角(xy旋转),仰角(z角)和距离(半径)作为球面坐标。 因此,对于xy平面的旋转,应将方位角更改为所需的角度(以度为单位)。那

mlab.view(azimuth=30, elevation=30, distance=3.0)

以下3个参数可以完全补偿以下其余代码

编辑: 那不是理想的结果,更像是

mlab.view(azimuth=7.59, elevation=7.59, distance=30.0)

接着是stackoverflow.com/questions/25783180/how-to-set-zoom-factor-in-mayavi解释的放大 另请参阅此答案的评论