我尝试($ ... $)
在 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$};
}
会工作。