Tikz foreach 循环和坐标计算

Tikz foreach 循环和坐标计算

我尝试($ ... $)在 tikz foreach 循环中使用坐标求值来对循环变量进行算术运算。但是,我似乎无法让它工作。

我迄今为止的代码:

\begin{tikzpicture}
    \coordinate (A) at (1,1);
    \coordinate (B) at (3,2);
    \coordinate (D) at ($(B)-(A)$);
    \begin{axis}[
        anchor=origin,
        disabledatascaling,
        xmin=-1,xmax=5,
        ymin=-1,ymax=3,
        x=1cm,y=1cm,
        grid=both,
        grid style={line width=.1pt, draw=gray!10},
        %major grid style={line width=.2pt,draw=gray!50},
        axis lines=middle,
        minor tick num=0,
        enlargelimits={abs=0.5},
        axis line style={latex-latex},
        ticklabel style={font=\tiny,fill=white},
        xlabel style={at={(ticklabel* cs:1)},anchor=north west},
        ylabel style={at={(ticklabel* cs:1)},anchor=south west}
    ]

    \draw [fill] (A) circle (1.5pt) node [below right] {$P$};
    \draw [fill] (B) circle (1.5pt) node [below right] {$Q$};
    \draw[->,thick,red!60!white] (A) -- (B) node [midway,below right,yshift=2pt] {$\vec d$};

    \foreach \x in {-3,...,6} {
        \draw [fill] ($(A)+\x/3*(D)$) circle (1.5pt);% node [below right] {$P$};
    }

    \end{axis}
\end{tikzpicture}

错误似乎是($(A)+\x/3*(D)$)。应该如何进行这种计算?我尝试在循环中定义一个新点

\path let \p1 = (D) in coordinate (r) at (\x*\x1,\x*\y1);

但这也不起作用。

答案1

在轴环境中,foreach 无法正确扩展,因此您需要使用适当的循环

\pgfplotsinvokeforeach{-3,...,6} {
    \draw [fill] ($(A)+#1/3*(D)$) circle (1.5pt);% node [below right] {$P$};
}

会工作。

相关内容