如何在 Tikz 中将标量与定义的变量 (\def) 相乘

如何在 Tikz 中将标量与定义的变量 (\def) 相乘

我目前有以下工作代码:

\begin{tikzpicture}
      \def\myr{7}
      \def\mytheta{45}         
      \def\myphi{50}
      \def\px{{\myr*sin(\mytheta)*cos(\myphi)}}
      \def\py{{\myr*sin(\mytheta)*sin(\myphi)}}                    
      \def\pz{{\myr*cos(\mytheta)}}

      \draw[axis] (0,0,0) -- (1.2*\myr,0,0) node[left]{$x$};                    
      \draw[axis] (0,0,0) -- (0,1.2*\myr,0) node[right]{$y$};
      \draw[axis] (0,0,0) -- (0,0,1.2*\myr) node[right]{$z$};
 \end{tikzpicture}

当我在第一行替换1.2*\myrfor时,问题就开始了。我尝试写入,但没有解决问题。我也尝试在末尾添加and,但没有成功。我该如何解决这个问题?谢谢阅读!1.2*\px\draw{1.2*\px}cmpt1.2*\px

解决了

{}通过删除定义周围的\px, \py, \pz1.2*\myr用替换解决了该问题{1.2*\px}

解决这个问题的更好方法是:在里面declare function = {px = \myr*sin(\mytheta)*cos(\myphi);}添加,然后只写入。[]\begin{tikzpicture}1.2*px

答案1

  1. 删除定义周围的一对{}。PGFMath 假设此处为数组。您仍然需要{1.2*\px}

  2. 使用declare function,以便您只需使用1.2*px(尽管我myPx在下面的代码中使用)。

  3. 设置X长度坐标坐标系,然后您就可以使用(1.2, 0, 0)

笔记:有关 TikZ 中的更多 3D 内容,请访问

代码

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[axis/.style=->]
\def\myr{7}
\def\mytheta{45}
\def\myphi{50}
\def\px{\myr*sin(\mytheta)*cos(\myphi)}
\def\py{\myr*sin(\mytheta)*sin(\myphi)}
\def\pz{\myr*cos(\mytheta)}

\draw[axis] (0,0,0) -- ({1.2*\px},0,0) node[right]{$x$};
\draw[axis] (0,0,0) -- (0,{1.2*\py},0) node[above]{$y$};
\draw[axis] (0,0,0) -- (0,0,{1.2*\pz}) node[below left]{$z$};
\end{tikzpicture}
\begin{tikzpicture}[
  axis/.style=->,
  declare function={
    myR = 7; myTheta = 45; myPhi = 50;
    px(\radius,\theta,\phi) = \radius*sin(\theta)*cos(\phi);
    py(\radius,\theta,\phi) = \radius*sin(\theta)*sin(\phi);
    pz(\radius,\theta,\phi) = \radius*cos(\theta);
    myPx = px(myR, myTheta, myPhi);
    myPy = py(myR, myTheta, myPhi);
    myPz = pz(myR, myTheta, myPhi);}]
\draw[axis] (0,0,0) -- (1.2*myPx,0,0) node[right]{$x$};
\draw[axis] (0,0,0) -- (0,1.2*myPy,0) node[above]{$y$};
\draw[axis] (0,0,0) -- (0,0,1.2*myPz) node[below left]{$z$};
\end{tikzpicture}
\begin{tikzpicture}[
  axis/.style=->,
  my cs/.style n args={3}{
    x={1cm*(#1)*sin(#2)*cos(#3)},
    y={1cm*(#1)*sin(#2)*sin(#3)},
    z={-.385cm*(#1)*cos(#2)}},
  my cs={7}{45}{50}]
\draw[axis] (0,0,0) -- (1.2, 0,   0  ) node[right]{$x$};
\draw[axis] (0,0,0) -- (0,   1.2, 0  ) node[above]{$y$};
\draw[axis] (0,0,0) -- (0,   0,   1.2) node[below left]{$z$};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容