在Python中用Mayavi再现下图的摄影机角度

在Python中用Mayavi再现下图的摄影机角度,python,plot,mayavi,Python,Plot,Mayavi,下图显示了如何剪切长方体: 我想将我的数据绘制如下(请注意,球体的坐标不会被剪切,即球体位于一个完美的立方体框中) 我使用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

下图显示了如何剪切长方体:

我想将我的数据绘制如下(请注意,球体的坐标不会被剪切,即球体位于一个完美的立方体框中)

我使用
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(方位角=0,仰角=0,焦点=[4,4,0],距离=30.0)
生成我想要的透视图。然而,我只能看到盒子的一边和远处。缩放相机会导致长方体从图像中消失,因为它会放大到点
x,y,z=[4,4,0]
。有没有办法“放大”图片的相关部分

根据(函数“视图”),可以使用参数方位角(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解释的放大 另请参见此答案的注释根据(函数“视图”),您可以使用参数方位角(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解释的放大
另请参见此答案的注释

否,这不会产生在前视图中具有x-y平面的内容。在对方位角和仰角进行了实验之后,我认为没有办法在保持x轴水平的同时,也保持长方体在原点的情况下,获得长方体顶部和右侧的视图。将相机移到一边如何?mayavi.mlab.move方法还有forward和right(我想您需要“right”)的参数,这应该会旋转绘图,但请注意,焦点也会移动。尝试在代码中添加:mlab.move(right=0.3)mayavi.mlab.yaw(5)我不确定符号,请参见俯仰和滚动,如果方向错误
move(right=4,up=4)
没有偏航会生成我想要的视点。我认为它相当于以下内容:
mlab.view(方位角=0,仰角=0,焦点=[4,4,0],距离=30.0)
。然而,我只能看到盒子的一边和远处。有没有办法“放大”图片的相关部分?请参阅更新的操作。首先,您必须使用俯仰、偏航和滚动(我认为您只需要前两个)将相机旋转到中心点,然后才能使用zomm。这里已经提出了缩放问题:对于相机转弯,我假设你需要(模符号)以弧线(4/30)=7.66°的角度俯仰和偏航。因此,代码为:mlab.yaw(7.66)mlab.pitch(7.66)如果它不工作,尝试更改标志,可能使用roll(滚动)代替其他两个功能之一。如果可行:请考虑勾勒长方体的边缘以获得更清晰的视图。这不是圆弧,请使用arctan代替。。。arctan(4/30)=7.59°(这里的小变化)不,这不会产生在前视图中有x-y平面的东西。在对方位角和仰角进行了实验之后,我认为没有办法在保持x轴水平的同时,也保持长方体在原点的情况下,获得长方体顶部和右侧的视图。将相机移到一边如何?mayavi.mlab.move方法还有forward和right(我想您需要“right”)的参数,这应该会旋转绘图,但请注意,焦点也会移动。尝试在代码中添加:mlab.move(right=0.3)mayavi.mlab.yaw(5)我不确定符号,请参见俯仰和滚动,如果方向错误
move(right=4,up=4)
没有偏航会生成我想要的视点。我认为它相当于以下内容:
mlab.view(方位角=0,仰角=0,焦点=[4,4,0],距离=30.0)
。然而,我只能看到盒子的一边和远处。有没有办法“放大”图片的相关部分?请参阅更新的操作。首先,您必须使用俯仰、偏航和滚动(我认为您只需要前两个)将相机旋转到中心点,然后才能使用zomm。这里已经提出了缩放问题:对于相机转弯,我假设你需要(模符号)以弧线(4/30)=7.66°的角度俯仰和偏航。因此,代码为:mlab.yaw(7.66)mlab.pitch(7.66)如果它不工作,尝试更改标志,可能使用roll(滚动)代替其他两个功能之一。如果可行:请考虑勾勒长方体的边缘以获得更清晰的视图。这不是圆弧,请使用arctan代替。。。arctan(4/30)=7.59°(此处变化较小)