![在 tikz 中连接 2 个坐标](https://linux22.com/image/439635/%E5%9C%A8%20tikz%20%E4%B8%AD%E8%BF%9E%E6%8E%A5%202%20%E4%B8%AA%E5%9D%90%E6%A0%87.png)
在 tikz 中,当连接 2 个坐标时,不同数量的 + 和 -s 之间有什么区别,例如 -+ , --++ , -++ , --+ 。
答案1
注意在 TikZ 中,有--
(两个破折号) 操作,但没有-
(一个破折号) 操作。 该命令表示从到\draw (A)--(B);
画一条直线段。 该命令返回错误。 操作、、、 ... 具有不同的含义。(A)
(B)
\draw (A)-(B);
-|
|-
->
许多 TikZ 初学者似乎对+
和感到困惑++
。要理解这些,我们需要两件事:连通路径分量和下一个加法的点。
连通路径组件一条路径通常由一些连通的路径部分组成。例如,
\draw
(A)--(B) % 1st connected path component
(C)--(D)--(E) % 2nd connected path component
(F) node{$F$} % 3rd connected path component
;
在连接路径组件中没有 +
或者++
,下一个加点正是当前连通路径分量的起点。
\draw (A); % the point for the next plus is A, but we do not care this.
\draw (A)--(B); % the point for the next plus is A, but we do not care this.
\draw (A)--(B)--(C); % the point for the next plus is A, but we do not care this.
当沿着connected path component
和 +
或++
:+
和都++
表示将下一个加法点加在一起(TikZ 之前已经知道了)。它们之间的唯一区别是:+
保持下一个加法点不变,而++
更新新的下一个加点:
\draw (A)--+(B); % \draw (A)--($(A)+(B)$); the point for the next plus is A
\draw (A)--++(B); % \draw (A)--($(A)+(B)$); the point for the next plus is A+B (useless in this case, since there is nothing to plus)
\draw (A)--++(B)--+(C); % \draw (A)--($(A)+(B)$)--($(A)+(B)+(C)$); the point for the next plus is A+B (uselful in this case: to plus with C)
现在请逐行复制下面的代码,并进行编译,看看+
和的不同效果++
。就这样!
希望这可以帮助!
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[gray!30] (-2,-3) grid (6,5);
\fill (0,0) circle(2pt);
\path
(-1,-2) coordinate (A) node[left]{$A$}
(4,1) coordinate (B) node[right]{$B$}
(1,3.5) coordinate (C) node[above]{$C$}
($(A)+(B)$) node[right]{$A+B$}
($(A)+(C)$) node[above]{$A+C$}
($(B)+(C)$) node[above]{$B+C$}
($(A)+(B)+(C)$) node[above]{$A+B+C$}
;
\draw (A)--(B)--(C);
% tpftnp=the point for the next plus
\draw (A)--(B)--+(C); % same as (A)--(B)--($(A)+(C)$), tpftnp is A
\draw[blue] (A)--+(B)--(C); % same as (A)--($(A)+(B)$)--(C), tpftnp is A
\draw[red] (A)--+(B)--+(C); % same as (A)--($(A)+(B)$)--($(A)+(C)$), tpftnp is A
\draw[green] (A)--(B)--++(C); % same as (A)--(B)--+(C), tpftnp is A, then C
\draw[violet] (A)--+(B)--++(C); % same as (A)--+(B)--+(C), tpftnp is A, then C
\draw[orange] (A)--++(B)--(C); % same as (A)--+(B)--(C), tpftnp is A, then B
\draw[cyan] (A)--++(B)--+(C); % same as (A)--($(A)+(B)$)--($(A)+(B)+(C)$) tpftnp is A, then B
\draw[blue] (A)--++(B)--++(C); % same as (A)--++(B)--+(C), tpftnp is A, then B, then C
\end{tikzpicture}
\end{document}
概括。从路径的每一小段(称为连通路径组件)的起点到终点,首先将起点作为下一个加法的点,即(P);然后
- 如果满足某个
+(A)
含义(P)+(A)
,则保持不变(P)
,继续下一步; - 如果满足
++(A)
含义(P)+(A)
,则更新(P)
为(P)+(A)
,然后继续下一步;
直到作品结束。