tikz 相对坐标

tikz 相对坐标

假设定义坐标ab。可以画一条线连接这两个坐标(\draw (a) -- (b))。假设想要画一条线,相对于a和向上移动 1 个单位b。第一个猜测是命令\draw (a){}+(0,1) -- (b){}+(0,1)。但是,此命令将点连接a+(0,1)到点b,大概是因为加法是在绘制命令之后进行的。如何获得所需的结果(从 到a+(0,1)绘制b+(0,1)

梅威瑟:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
 \draw[fill] (0,0) circle (2pt) coordinate (a);
 \draw[fill] (5,0) circle (2pt) coordinate (b);
 \draw (a) -- (b);
 \draw (a){}+(0,1) -- (b){}+(0,1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑:如何绘制相对于两个点的坐标的算术平均值移动的点的坐标(类似于\node at ($(((s1)+(s2))/2)+(0,1)$))。

答案1

你可以尝试一下,使用这个calc库(参见13.5 坐标计算pgf 手册):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}

\begin{tikzpicture}
  \coordinate (a) at (2,2);
  \coordinate (b) at (0,-2);
  \node[draw=red] at (a) {a};
  \node[draw=red] at (b) {b};
  \draw[help lines] (-1,-3) grid (3,3);
  \draw ($ (a) + (0,1) $) -- ($ (b) + (0,1) $);
\end{tikzpicture}

\end{document}

在此处输入图片描述

要回答后续问题,您可以使用部分修饰语(手册第 13.5.3 节)。例如,

(1,2)!.75!(3,4)

是“从 (1,2) 到 (3,4) 的四分之三处的坐标。” 一个完整的小例子:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}

\begin{tikzpicture}
  \coordinate (a) at (2,2);
  \coordinate (b) at (0,-2);
  \node[draw=red] at (a) {a};
  \node[draw=red] at (b) {b};
  \draw[help lines] (-1,-3) grid (3,3);
  \draw ($ (a) + (0,1) $) -- ($ (b) + (0,1) $);
  \draw[blue,thick] (-1,2) -- ($ (a)!0.5!(b) $) -- (3,2);
  \draw[magenta,thick] (2,-2) -- ($ (a)!0.75!(b) $) -- ($ (a)!0.25!(b) $) -- (3,2);
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容