如果 -- 操作符位于末尾,为什么 \draw 命令中的 \foreach 扩展不起作用?

如果 -- 操作符位于末尾,为什么 \draw 命令中的 \foreach 扩展不起作用?

看看这里的 MWE,

\documentclass{standalone}
\usepackage{tikz}
\newcommand{\PolarToX}[2]{ {(#1)*cos(#2)}, {(#1)*sin(#2)} }
\begin{document}
\tikz{
\draw [very thick] (0, 0) \foreach \i in {0, 1, ..., 360} {-- (\PolarToX{4+.3*cos(20*\i)}{\i})};
}
\end{document}

输出如下内容,

一块饼干

我不想在中间画一条线。所以我尝试这样做,

\draw [very thick] \foreach \i in {0, 1, ..., 360} { (\PolarToX{4+.3*cos(20*\i)}{\i}) -- } cycle;

不起作用。下面这个也不起作用:

\draw [very thick] (0,0) \foreach \i in {0, 1, ..., 360} { (\PolarToX{4+.3*cos(20*\i)}{\i}) -- } cycle;

为什么以上两种方法都不起作用?正确的方法是什么?

答案1

两件事情:

  1. TikZ 有极坐标:(<angle>:<radius>)甚至(<angle>:<x radius> and <y radius>)
  2. TikZ 有一个绘图功能,
    • 基本上本身就是一个循环
    • 但要小心处理路径的开始和结束。

这意味着你可以这样做

\documentclass[tikz]{standalone}
\begin{document}
\tikz
  \draw[very thick]
    plot[samples at = {0, ..., 359}, sharp cycle] (\x:{4+.3*cos(20*\x)});
\end{document}

并得到

在此处输入图片描述


这里我使用samples at键(注意...符号!)来明确描述应该使用的值\x。如果没有其他选项,它只会向第一个坐标发出移动到(除非您使用-- plot),然后--向所有其他坐标发出一行()。

该键末尾sharp cycle会添加一个。-- cycle

笔记:事实上并非如此,它在 PGF 级别上运行,但这基本上就是plot界面的工作方式。

答案2

只需将点 (0,0) 替换为第一个点即可。如下所示:

\documentclass{standalone}
\usepackage{tikz}
\newcommand{\PolarToX}[2]{ {(#1)*cos(#2)}, {(#1)*sin(#2)} }
\begin{document}
\tikz{
        \draw [very thick] (\PolarToX{4.3}{0}) \foreach \i in { 1, ..., 360} {-- (\PolarToX{4+.3*cos(20*\i)}{\i})};
}
\end{document}

您尝试的方法不起作用的原因是,扩展之后\foreach,您的表达式总是以 开头----在结尾处有一个悬垂部分,这两者都不符合\drawtikz 中的正确语法。

答案3

由于\draw [very thick] \foreach \i in {0,...,5} {--node[pos=0,below] {\i} ++(1,0)};模式以 开头\i=1,因此只需删除节点(0,0)即可关闭,我们在 360 后放置 1\foreach \i in {0, ..., 360,1}

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\newcommand{\PolarToX}[2]{ {(#1)*cos(#2)}, {(#1)*sin(#2)} }
\begin{document}
\tikz{
\draw [very thick]  \foreach \i in {0, ..., 360,1} {-- (\PolarToX{4+.3*cos(20*\i)}{\i})};
}

% \bigskip
% \tikz{
% \draw [very thick] \foreach \i in {0,...,5} {--node[pos=0,below] {\i} ++(1,0)};
% }
\end{document}

在此处输入图片描述

相关内容