Tikz 中的本轮和均轮 - 函数语法

Tikz 中的本轮和均轮 - 函数语法

我想建立一个行星图,并在网上找到了一个有用的三角函数(URL 在我的 MWE 注释中)。我个人的问题是,我无法将复杂函数写为“plot”参数。我尝试了几次,将弧形括号、圆括号和美元符号以各种组合混合在一起(注意成对),但都失败了。未注释的“plot”集成了正弦和余弦,并且成功了(实际上,它只是图中间的一个小圆圈)。更复杂的是,在注释中,语法失败了,我不明白为什么。我怀疑该函数是由 PGF 引擎处理的,而不是由 TikZ 处理的,我会混合这两种语法吗?

有没有提示可以在 TikZ+LuaLaTeX 环境中运行?括号、弧形括号和美元符号的用途是什么以及以何种组合使用?

\documentclass{article}
\usepackage{fontenc}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
% epicycle+deferent/epitrochoid - algorithm
% see http://www.malinc.se/math/trigonometry/spirographen.php
\def\ri{4}\def\re{1}\def\m{2} %radius internal-external, multiplicator
\draw [thick] (0,0) circle (\ri);
\foreach \a in {0,10,...,350} \draw (0,0)++(\a:\ri) circle (\re);
\draw[domain=0:360,smooth,samples=200,variable=\a] plot ({cos(\m*\a)},{sin(\m*\a)});
% \draw[domain=0:360,smooth,samples=200,variable=\a] plot ({$\ri*cos(\a)+\re*cos(\m*\a)$},{$\ri*sin(\a)+\re*sin(\m*\a)$});
% \draw[domain=0:360,smooth,samples=200,variable=\a] plot function {\ri*cos(\a)+\re*cos(\m*\a),\ri*sin(\a)+\re*sin(\m*\a)};
\end{tikzpicture} 
\end{document}

答案1

删除该$对,它应该可以工作

\documentclass{article}
\usepackage{fontenc}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
% epicycle+deferent/epitrochoid - algorithm
% see http://www.malinc.se/math/trigonometry/spirographen.php
\def\ri{4}\def\re{1}\def\m{2} %radius internal-external, multiplicator
\draw [thick] (0,0) circle (\ri);
\foreach \a in {0,10,...,350} \draw (0,0)++(\a:\ri) circle (\re);
%\draw[domain=0:360,smooth,samples=200,variable=\a] plot ({cos(\m*\a)},{sin(\m*\a)});
\draw[domain=0:360,smooth,samples=200,variable=\a] plot ({\ri*cos(\a)+\re*cos(\m*\a)},{\ri*sin(\a)+\re*sin(\m*\a)});
%\draw[domain=0:360,smooth,samples=200,variable=\a] plot function {\ri*cos(\a)+\re*cos(\m*\a),\ri*sin(\a)+\re*sin(\m*\a)};
\end{tikzpicture} 
\end{document}

相关内容