使用 tikz-3dplot 的坐标系

使用 tikz-3dplot 的坐标系

我正在尝试使用tikz-3dplot它来绘制一个立方体,我对定义一个点的可能性特别感兴趣,\tdplotsetcoord该点允许获得 x/y/z/xz... 坐标。但是当我尝试在主坐标系 (4,4,4) 中定义一个点时tikz-3dplot\tdplotsetcoord{P}{sqrt(3)*4}{45}{45}我认为是这样),我没有得到我期望的结果,如下所示。图中的蓝色和黑色节点应该相同。有什么想法吗?

\documentclass[tikz]{standalone}
\usepackage{tikz-3dplot}
\begin{document}

\tdplotsetmaincoords{70}{110}
\begin{tikzpicture}[tdplot_main_coords]

% cube
\tdplotsetcoord{P}{sqrt(3)*4}{45}{45}
\draw[dashed] 
  (0,0,0) -- (Px)
  (0,0,0) -- (Py)
  (0,0,0) -- (Pz);
\draw[->] 
  (Px) -- ++ (1,0,0) node[anchor=north east]{$x$};
\draw[->]
   (Py) -- ++(0,1,0) node[anchor=north west]{$y$};
\draw[->] 
  (Pz) -- ++(0,0,1) node[anchor=south]{$z$};

\draw[thick]
  (Pxz) -- (P) -- (Pxy) -- (Px) -- (Pxz) -- (Pz) -- (Pyz) -- (P); 
\draw[thick]
  (Pyz) -- (Py) -- (Pxy);

\filldraw[dashed,blue] (0,0,0)-- (P) circle (2pt);

\filldraw[dashed] (0,0,0)-- (4,4,4) circle (2pt);

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

欢迎使用 TeX-SE!计算球面坐标的一种方法(4,4,4)是求解

(r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),r*sin(theta))=(4,4,4)

由此可得出r=4*sqrt(3)phi=45,正如您所得到的,和theta=asin(sqrt(2/3)),这与您所得到的有所不同。顺便说一句,您也可以使用库的球面坐标3d,它们遵循略有不同的约定。以下 MWE 表明结果与上述考虑一致。

\documentclass[tikz]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{3d}
\begin{document}

\tdplotsetmaincoords{70}{110}
\begin{tikzpicture}[tdplot_main_coords]
\pgfmathsetmacro{\mytheta}{asin(sqrt(2/3))}
\typeout{\mytheta}
% cube
\tdplotsetcoord{P}{sqrt(3)*4}{\mytheta}{45}
\draw[dashed] 
  (0,0,0) -- (Px)
  (0,0,0) -- (Py)
  (0,0,0) -- (Pz);
\draw[->] 
  (Px) -- ++ (1,0,0) node[anchor=north east]{$x$};
\draw[->]
   (Py) -- ++(0,1,0) node[anchor=north west]{$y$};
\draw[->] 
  (Pz) -- ++(0,0,1) node[anchor=south]{$z$};

\draw[thick]
  (Pxz) -- (P) -- (Pxy) -- (Px) -- (Pxz) -- (Pz) -- (Pyz) -- (P); 
\draw[thick]
  (Pyz) -- (Py) -- (Pxy);

\filldraw[dashed,blue] (0,0,0)-- (P) circle (2pt);

\draw[green!70!black] (4,4,4) circle (3pt);

\draw[red] (xyz spherical cs:radius={4*sqrt(3)},
  longitude=45,latitude=90-\mytheta) circle (4pt);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容