在里面tikz-3dplot
文档(第 15 页)\tdplotsetmaincoords{a}{b}
建议旋转坐标系。但显然它只实现了围绕x
和z
轴的旋转。
x
如何实现一个指向上方、z
指向右侧并且y
几乎指向“页面之外”的坐标系统?(y
需要绕轴旋转)。
a
尽管尝试了和的几个值b
,但我没有得到这个。到目前为止,我的代码(部分来自这非常有用的答案):
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{70}
\begin{tikzpicture}[tdplot_main_coords,font=\sffamily]
\draw[-latex] (-7.5,0,0) -- (7.5,0,0) node[above right] {$x$};
\draw[-latex] (0,-7.5,0) -- (0,7.5,0) node[below] {$y$};
\draw[-latex] (0,0,-7.5) -- (0,0,7.5) node[above left] {$z$};
\draw[fill=gray,opacity=0.4] (0,-7.5,7.5) -- (0,7.5,7.5) -- (0,7.5,-7.5) -- (0,-7.5,-7.5) -- cycle;
\draw[fill=gray,opacity=0.2] (-7.5,0,-7.5) -- (-7.5,0,7.5) -- (7.5,0,7.5) -- (7.5,0,-7.5) -- cycle;
\end{tikzpicture}
\end{document}
该z
轴应该替换当前y
轴,该x
轴应该替换当前z
轴,该y
轴应该替换当前x
轴。
作为额外的尝试,我\tdplotsetrotatedcoords{0}{40}{0}
在最后两秒之前尝试过draw
,但根本没有效果。
答案1
最简单的方法是重新标记轴,使 x 指向上方,依此类推。但这可能不是您想要的。因此,正确的方法是使用旋转坐标。
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{70}
\begin{tikzpicture}[tdplot_main_coords,font=\sffamily]
\tdplotsetrotatedcoords{-90}{-90}{0}
\begin{scope}[tdplot_rotated_coords]
\draw[-latex] (-7.5,0,0) -- (7.5,0,0) node[above right] {$x$};
\draw[-latex] (0,-7.5,0) -- (0,7.5,0) node[below] {$y$};
\draw[-latex] (0,0,-7.5) -- (0,0,7.5) node[above left] {$z$};
\end{scope}
\draw[fill=gray,opacity=0.4] (0,-7.5,7.5) -- (0,7.5,7.5) -- (0,7.5,-7.5) -- (0,-7.5,-7.5) -- cycle;
\draw[fill=gray,opacity=0.2] (-7.5,0,-7.5) -- (-7.5,0,7.5) -- (7.5,0,7.5) -- (7.5,0,-7.5) -- cycle;
\end{tikzpicture}
\end{document}
首先,是的,乍一看,\tdplotsetmaincoords
只需要两个参数很奇怪。如果你再多想一想,你就会意识到,为了描述 3D 中的旋转,你只需要两个角度。但我同意你的观点,调整中的角度\tdplotsetmaincoords
并不能让你访问所有可能的旋转。这就是我建议使用的原因\tdplotsetrotatedcoords
。请注意,存在歧义,从手册中不清楚这些旋转的应用顺序。(更具体地说,先绕 x 轴旋转然后绕 y 轴旋转与先绕 y 轴旋转然后绕 x 轴旋转产生的结果不同。也就是说,问题在于 SO(3) 是非阿贝尔的。)使用这些技巧,我到目前为止能够获得任何所需的旋转。
答案2
我相信结合\tdplotsetmaincoords{100}{10}
此选项rotate=269.7
可以实现您所要求的功能!
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{80}{175}
\begin{tikzpicture}[tdplot_main_coords,font=\sffamily,rotate=269.2]
\draw[-latex] (-7.5,0,0) -- (7.5,0,0) node[above right] {$x$};
\draw[-latex] (0,-7.5,0) -- (0,7.5,0) node[below] {$y$};
\draw[-latex] (0,0,-7.5) -- (0,0,7.5) node[above left] {$z$};
\draw[fill=gray,opacity=0.4] (0,-7.5,7.5) -- (0,7.5,7.5) -- (0,7.5,-7.5) -- (0,-7.5,-7.5) -- cycle;
\draw[fill=gray,opacity=0.2] (-7.5,0,-7.5) -- (-7.5,0,7.5) -- (7.5,0,7.5) -- (7.5,0,-7.5) -- cycle;
\end{tikzpicture}
\end{document}