在下面的代码中,给出的第二个坐标-- +
似乎也更新了路径以供进一步计算。我预期的形状应该看起来像一个大圆周率。
PGF 手册中关于相对坐标的描述(第 133 页):
除了 ++,您还可以使用单个 +。这也指定了相对坐标,但它不会“更新”当前点以供后续使用相对坐标。因此,您可以使用此符号指定多个点,所有点都相对于同一个“初始”点 [...]
第一个点(左侧)的工作方式与我预期的一样,但第二个点却不是这样。我疏忽了什么?
我的输出如下:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- ++(0,3) -- +(-2.5,0) -- ++(3,0) -- +(2.5,0) -- ++(0,-3);
\useasboundingbox(-3,-.5) rectangle (6,4);
\end{tikzpicture}
\end{document}
答案1
我认为,如果以视觉形式绘制出来,就会很有意义:
- 红色标记的运动是相对于红色圆圈标记的点的。
- 同样,蓝色标记的动作是相对于蓝色圆圈标记的点而言的。
- 最后,绿色标记的动作是相对于绿色圆圈标记的点的。
代码:
\documentclass[border=5pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- ++(0,3) -- +(-2.5,0) -- ++(3,0) -- +(2.5,0) -- ++(0,-3);
\begin{scope}[yshift=-40mm,red]
\draw [fill] (0,0) circle (1.5pt) node [right] {(0,0)} -- ++(0,3) node [below right] {3 up};
\end{scope}
\begin{scope}[yshift=-40mm,blue]
\draw [fill] (0,3) circle (1.5pt) node [above] {(0,3)} -- +(-2.5,0) circle (1.5pt) node [below right, font=\small] {2.5 to the left} -- ++(3,0) node [below, font=\small] {3 to the right};
\end{scope}
\begin{scope}[yshift=-40mm,green]
\draw [fill] (3,3) circle (1.5pt) node [above] {(3,3)} -- +(2.5,0) circle (1.5pt) node [above left, font=\small, xshift=5mm] {2.5 to the right} -- ++(0,-3) circle (1.5pt) node [left, font=\small] {3 down};
\end{scope}
\end{tikzpicture}
\end{document}
答案2
你必须像这样使用它:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- ++(0,3) -- +(-2.5,0) -- ++(5.5,0) -- ++(-2.5,0) -- +(0,-3);
\useasboundingbox(-3,-.5) rectangle (6,4);
\end{tikzpicture}
\end{document}
如何?
(0,0)
从到画一条线(0,3)
,将原点改为++
。新的起点是(0,3)
- 从
(0,3)
画到-2.5
左 (-2.5,0)
从(以初始点为(0,3)
)5.5 向右绘制,并将初始点更新为此点。- 现在向左返回 2.5(相对于
(5.5,0)
)。 - 从这里向下绘制 3 个单位。
单打+
从指定点移动给定的距离。例如
\draw (1,1) - +(2,1);
(1,1)
从右向左画 2 个单位的线关于原产地和 1 个单位关于原产地。 另一方面
\draw ++(1,1) - +(2,1);
(1,1)
从右向左画 2 个单位的线关于(1,1)和 1 个单位关于(1,1)。