使用 tikz-3dplot 切换 XYZ 轴

使用 tikz-3dplot 切换 XYZ 轴

此 MWE:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}

\begin{document}

\tdplotsetmaincoords{60}{120}%
\begin{tikzpicture}
        [tdplot_main_coords,
            cube/.style={very thick,black},
            grid/.style={very thin,gray},
            axis/.style={->,blue,thick}]

    %draw a grid in the x-y plane
    \foreach \x in {-0.5,0,...,2.5}
        \foreach \y in {-0.5,0,...,2.5}
        {
            \draw[grid] (\x,-0.5) -- (\x,2.5);
            \draw[grid] (-0.5,\y) -- (2.5,\y);
        }
            
    %draw the main coordinate frame axes
    \draw[axis,tdplot_main_coords] (0,0,0) -- (3,0,0) node[anchor=west]{$x$};
    \draw[axis,tdplot_main_coords] (0,0,0) -- (0,3,0) node[anchor=north west]{$y$};
    \draw[axis,tdplot_main_coords] (0,0,0) -- (0,0,3) node[anchor=west]{$z$};
    
\end{tikzpicture}

\end{document}

收益

在此处输入图片描述

我想旋转方向,使得:

  1. X 轴移动到 Y 轴所在的位置。
  2. Y 轴移动到 Z 轴所在的位置。
  3. Z 轴移动到 X 轴所在的位置。

我不确定这是否不可能,或者tikz-3dplot会让人感到困惑,但我无法做到这一点\tdplotsetmaincoords{}

答案1

经过一番苦思冥想,我终于成功了。这个包使用欧拉角方向来改变图像透视。

有两个坐标系:主坐标系(仅使用两个角度即可移动)和旋转坐标系(使用三个角度即可移动)。文档中“解释”了主坐标系为何只有两个旋转:“请注意,由于屏幕坐标是二维值,因此此转换不需要旋转矩阵的第三行。”这对我来说完全没有意义。

无论如何,我的解决办法是,保持主坐标系原样,旋转旋转后的坐标系并仅使用它。它遵循 zyz 旋转,看起来像这样

在此处输入图片描述

这是 MWE:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}

\begin{document}

\tdplotsetmaincoords{0}{0}%
\begin{tikzpicture}
    [
        tdplot_main_coords,
        rotated axis/.style={->,orange,thick},
        cube/.style={very thick,black},
        ]
        
    %draw the rotated coordinate frame axes
    \tdplotsetrotatedcoords{15}{-20}{-15}%
    \draw[rotated axis, tdplot_rotated_coords] (0,0,0) -- (3,0,0) node[anchor=west]{$x'$};
    \draw[rotated axis, tdplot_rotated_coords] (0,0,0) -- (0,3,0) node[anchor=south west]{$y'$};
    \draw[rotated axis, tdplot_rotated_coords] (0,0,0) -- (0,0,3) node[anchor=west]{$z'$};
    
    \draw[cube, tdplot_rotated_coords] (0,0,0) -- (0,2,0) -- (2,2,0) -- (2,0,0) -- cycle;
    \draw[cube, tdplot_rotated_coords] (0,0,2) -- (0,2,2) -- (2,2,2) -- (2,0,2) -- cycle;
    \draw[cube, tdplot_rotated_coords] (0,0,0) -- (0,0,2);
    \draw[cube, tdplot_rotated_coords] (0,2,0) -- (0,2,2);
    \draw[cube, tdplot_rotated_coords] (2,0,0) -- (2,0,2);
    \draw[cube, tdplot_rotated_coords] (2,2,0) -- (2,2,2);
\end{tikzpicture}

\end{document}

结果是

在此处输入图片描述

相关内容