MATLAB绘制三维图形中采用左手坐标系

3
我想使用plot3在Matlab中显示一些数据。这些数据在左手坐标系中最有意义。

enter image description here

然而,MATLAB的3D绘图坐标系是朝向上的Z轴,这与数据记录方式不一致,使可视化变得混乱。我了解Matlab也使用左手坐标系,只是它沿x轴顺时针旋转了90度。

enter image description here

我尝试使用camup命令接近我想要的效果,但是一旦在GUI中旋转图形,camup就被丢弃,图形恢复到上述约定。我希望不必将数据顺时针旋转90度关于x轴,因为这会在分析和调试时引入另一层歧义。编辑:我认为这些指令的顺序接近。

enter image description here

set(gca, 'YDir', 'reverse');
camup([0 1 0]);
xlabel('X (mm)');
ylabel('Y (mm)');
zlabel('Z (mm)');
1个回答

4
你可以通过反转任意一个轴的方向来绘制左手坐标系。这由axesXDirYDirZDir属性控制。
surf(peaks)
set(gca, 'ZDir', 'reverse')
xlabel('x')
ylabel('y')
zlabel('z')

enter image description here


抱歉,我觉得你可能误解了问题。y轴应该是“向上”的方向。我没有看到你的截图和我最初发布的截图之间有任何区别。 - Carpetfizz
@Carpetfizz:区别在于这个图的z轴指向下方,成为一个左手坐标系。MATLAB的默认设置是右手坐标系。如果你旋转这些坐标轴,就可以得到你想要的视图。 - Cris Luengo
哦,我现在明白了 - 谢谢!但我猜我不能像原帖中的第一张图片那样查看绘图,其中y轴是“向上”向量? - Carpetfizz
@Carpetfizz:将此与您的“camup”命令结合使用?我不知道为什么它会被重置。听起来像是一个错误?我得试试看。 - Cris Luengo
1
是的,一旦我用鼠标旋转场景,相机向上就会被重置。 - Carpetfizz
1
即使不旋转,它也无法产生所需的效果。 - Carpetfizz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接