Tikz foreach 循环和坐标计算(包括缩放)

Tikz foreach 循环和坐标计算(包括缩放)

我正在尝试从线段上的一个点绘制多条线,该线段将给定点列表中的点连接到坐标原点 (0,0)。由于我想自动执行此过程,因此我使用了\foreach。当我尝试使用这些calc功能来计算点的坐标时,我遇到了错误。

这是我的代码

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}

\def\points{(-2,0), (-1.2, 1), (0, 1.55), (0.8, 1.65), (1.3, 1.4), (2, 0.1), (1.8, -0.7), (1,-1.6), (-1, -1)}

\begin{document}
\begin{tikzpicture}
  \foreach \p in \points{
    \draw[gray!80!white] \p--(0,0);
    \draw[gray, ->] \p--($\p!0.1!(0,0)$);}
\end{tikzpicture}
\end{document}

这里是错误:

File ended while scanning use of \tikz@cc@parse@factor.

请注意,这个问题不同于这个因为我不使用该axis环境。

答案1

这里有两种可能的选择。在第一个中,我将\points宏的定义更改为不包括(),并将其也添加到代码中。然后您需要使用{}而不是()in\points来分隔“数组”中的条目。

另一个版本使用了 的定义\points,但完全省去了坐标计算,而是使用decoration来添加箭头提示。

在此处输入图片描述

\documentclass[border=5mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{calc,decorations.markings}

\def\points{{-2,0}, {-1.2, 1}, {0, 1.55}, {0.8, 1.65}, {1.3, 1.4}, {2, 0.1}, {1.8, -0.7}, {1,-1.6}, {-1, -1}}

\begin{document}
\begin{tikzpicture}
  \foreach \p in \points{
    \draw[gray!80!white] (\p)--(0,0);
    \draw[gray, ->] (\p)--($(\p)!0.1!(0,0)$);
}
\end{tikzpicture}

% second version
\def\points{(-2,0), (-1.2, 1), (0, 1.55), (0.8, 1.65), (1.3, 1.4), (2, 0.1), (1.8, -0.7), (1,-1.6), (-1, -1)}

\begin{tikzpicture}[decoration={markings,mark=at position 0.1 with \arrow{>}}]
  \foreach \p in \points
    \draw[gray!80!white, postaction={decorate}] \p--(0,0);
\end{tikzpicture}
\end{document}

相关内容