如何使用新命令参数进行计算

如何使用新命令参数进行计算

我正在尝试学习使用该\newcommand 功能来生成不同大小的截头体,可能用虚线将截头体变成圆锥体。

这行代码不起作用 - 显然是使用参数的算术问题 - 我一直在用替代方法进行测试,看来是除法导致了问题。

%\draw[semithick] (-#3,#1) ellipse ( (#2)*(#3)/((#1)+(#2) ) and (#2)*(#3)/(3*( (#1)+(#2) ) ) );%

我的代码如下

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{amssymb}
\usetikzlibrary{math}


\newcommand{\Frustom}[3]{

\begin{tikzpicture}

\draw[dashed,color=gray] (0,0) arc (2:178:#3 and #3/5);
\draw[semithick] (-2*#3,0) -- (-#3,#1+#2);
\draw[semithick] (0,0) -- (-#3,#1+#2);
\draw[semithick] (0,0) arc (0:-180:#3 and #3/5);
%\draw[semithick] (-#3,#1) ellipse ( (#2)*(#3)/((#1)+(#2) ) and (#2)*(#3)/(3*( (#1)+(#2) ) ) );% right ellipse

\draw[semithick] (-#3,#1) ellipse ( #2*#3/9 and 12/27 ) ;

\end{tikzpicture}
} %

\begin{document}
    \Frustom{6}{3}{4} %frustum height, cone height, base radius
\end{document}

答案1

欢迎来到 TeX.SX!以下作品:

\documentclass{article}
\usepackage{tikz}

\newcommand*{\Frustum}[3]{%
  \begin{tikzpicture}

  \draw[dashed,color=gray] (0,0) arc (2:178:#3 and #3/5);
  \draw[semithick] (-2*#3,0) -- (-#3,#1+#2);
  \draw[semithick] (0,0) -- (-#3,#1+#2);
  \draw[semithick] (0,0) arc (0:-180:#3 and #3/5);

  \pgfmathsetmacro{\radx}{(#2)*(#3) / ((#1)+(#2))}
  \pgfmathsetmacro{\rady}{(#2)*(#3)/(3*( (#1)+(#2) ) )}
  \draw[semithick] (-#3,#1) ellipse[x radius=\radx, y radius=\rady];

  \end{tikzpicture}%
}

\begin{document}
  \Frustum{6}{3}{4} % frustum height, cone height, base radius
\end{document}

截屏

如果你需要在 或 里面使用逗号\radx\rady例如,如果你使用诸如 之类的函数atan2),你需要使用括号来帮助 TikZ 解析器,如下所示:

\draw[semithick] (-#3,#1) ellipse[x radius={\radx},
                                  y radius={\rady}];

否则,它将像逗号分隔命令的选项一样ellipse

注意:请注意命令中引入的空格\Frustum,在 之前\begin{tikzpicture}和之后\end{tikzpicture}。查看我为了避免这种情况而添加的百分号(请务必阅读如果你不知道这个故事)。如果你真的想开始一个新段落,我认为在它的定义中\Frustum使用是更好的风格。\par

相关内容