我想要做的就是旋转问题中接受的答案的轴
使得新的 z 轴保持在当前 y 轴的位置。
我的新轴(例如,x'、y' 和 z')应该看起来与那些 xyz 轴完全一致,但具有以下对应关系:
- z' <- y
- y' <- x
- x' <- z
我不想简单地改变轴的标签,因为我想要使轴 z' 仍然沿着方向 (0,0,1) 并且角度 theta 仍然必须来自该方向。
来自如何绘制和注释球面坐标系以下:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{60}{110}
%
\pgfmathsetmacro{\rvec}{.8}
\pgfmathsetmacro{\thetavec}{30}
\pgfmathsetmacro{\phivec}{60}
%
\begin{tikzpicture}[scale=5,tdplot_main_coords]
\coordinate (O) at (0,0,0);
\draw[thick,->] (0,0,0) -- (1,0,0) node[anchor=north east]{$x$};
\draw[thick,->] (0,0,0) -- (0,1,0) node[anchor=north west]{$y$};
\draw[thick,->] (0,0,0) -- (0,0,1) node[anchor=south]{$z$};
\tdplotsetcoord{P}{\rvec}{\thetavec}{\phivec}
\draw[-stealth,color=red] (O) -- (P) node[above right] {$P$};
\draw[dashed, color=red] (O) -- (Pxy);
\draw[dashed, color=red] (P) -- (Pxy);
\tdplotdrawarc{(O)}{0.2}{0}{\phivec}{anchor=north}{$\phi$}
\tdplotsetthetaplanecoords{\phivec}
\tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{0.5}{0}%
{\thetavec}{anchor=south west}{$\theta$}
\end{tikzpicture}
\end{document}
我无法做到这一点,\tdplotsetmaincoords{}{}
因为该命令仅绕 x 轴旋转,然后绕新的 z 轴旋转(从下面显示的配置),而达到我的配置需要第三次旋转(如欧拉角)或绕 y 轴旋转。
这是来自的图片改变 tikz-3dplot 图片中的轴(bobobobo 的回答)使用 tdplotsetmaincoords 显示旋转的起始配置
答案1
我终于能够用 来做到这一点\tdplotsetrotatedcoords{-90}{-90}{0}
。我还必须用 来\tdplotsetrotatedthetaplanecoords{\phivec}
代替\tdplotsetthetaplanecoords{\phivec}
。
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{60}{110}
\tdplotsetrotatedcoords{-90}{-90}{0}
%
\begin{tikzpicture}[scale=5,tdplot_rotated_coords]
\coordinate (O) at (0,0,0);
\draw[thick,->] (0,0,0) -- (1,0,0) node[anchor=north east]{$x$};
\draw[thick,->] (0,0,0) -- (0,1,0) node[anchor=north west]{$y$};
\draw[thick,->] (0,0,0) -- (0,0,1) node[anchor=south]{$z$};
\def\rvec{1}
\def\thetavec{45}
\def\phivec{30}
\tdplotsetcoord{P}{\rvec}{\thetavec}{\phivec}
\draw[-stealth,color=red] (O) -- (P) node[above right] {$P$};
\draw[dashed, color=red] (O) -- (Pxy);
\draw[dashed, color=red] (P) -- (Pxy);
% \draw[dashed, color=red] (P) -- (Pyz);
% \draw[dashed, color=red] (O) -- (Pxz);
% \draw[dashed, color=red] (P) -- (Pxz);
\tdplotdrawarc[tdplot_rotated_coords]{(O)}{0.2}{0}{\phivec}{anchor=north east}{$\phi$}
\tdplotsetrotatedthetaplanecoords{\phivec}
\tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{0.5}{0}{\thetavec}{anchor=south west}{$\theta$}
\end{tikzpicture}
\end{document}