Tikz:绘制并相对于另一个节点对齐

Tikz:绘制并相对于另一个节点对齐
\documentclass[tikz, border=1cm]{standalone}
\begin{document}

\begin{tikzpicture}
    \node[draw, circle, minimum size=2cm] (c) at (0, 0){};
    \draw[->] (-1, 2)--(1, 2);
\end{tikzpicture}

\end{document}

在此处输入图片描述

我将箭头置于圆圈上方作为中心,这样我可以轻松“计算”坐标。是否可以按照以下方式制作相同的箭头:绘制一条“x cm”线,箭头位于“c”上方?

我尝试了pic一种方法,但它过于复杂,而且相对于 的功能有限node(例如相对于 放置标签pic)。我认为另一种方法可能是将带有箭头的线定义为预定义形状(我仍然不擅长)。还有其他直接的方法吗?

答案1

还有一个版本:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\MyCenterArrow[4][]{%[pass to \draw]{node}{above}{length}
  \draw[->,#1]($(#2)+(-#4/2,#3)$) -- +(#4,0);
}
\begin{document}
\begin{tikzpicture}
  \node[draw,circle,minimum size=2cm](a){A};
  \MyCenterArrow{a}{2cm}{1cm}
  \node[draw,minimum size=2cm](b) at (3,0) {B};
  \MyCenterArrow{b}{2cm}{3cm}  
  \MyCenterArrow[red]{b}{-2cm}{2cm}
  \MyCenterArrow[green,-latex]{$(a)!0.5!(b)$}{-1.5cm}{2cm}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

一个简单的shift就可以完成这个工作:

\draw[->] ([shift={(-`half length`,`separation`)}]c.north)--++(0:`total length`);

一些例子:

\documentclass[tikz, border=1cm]{standalone}
%\input{preamble}
\begin{document}

\begin{tikzpicture}
    \node[draw, circle, minimum size=2cm] (c) at (0, 0){};
    \draw[->] ([shift={(-1cm,1.5cm)}]c.north)--++(0:2cm);
    \draw[->] ([shift={(-1.5cm,1.2cm)}]c.north)--++(0:3cm);
    \draw[->] ([shift={(-.5cm,.5cm)}]c.north)--++(0:1cm);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

您可以使用calctikz并使用(c.west)它获取节点的左侧和(c.east)右侧。结果是相同的。

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
    \node[draw, circle, minimum size=2cm] (c) at (0, 0){};
    \draw[->] ($(c.west)+(0,2)$)--($(c.east)+(0,2)$);
\end{tikzpicture}

\end{document}

答案4

该宏在上面绘制一个圆圈和一个箭头。

\documentclass[tikz, border = 1cm]{standalone}

\begin{document}

% #1    x of circle.
% #2    y of circle.
% #3    Radius of circle.
\newcommand{\allyourstuff}[3]{%
    \draw (#1, #2) circle (#3);
    \draw[->] (#1 - #3, #2 + #3 + 2ex) -- ++(2 * #3, 0);
}

\begin{tikzpicture}
    \allyourstuff{1cm}{0cm}{0.5cm}
    \allyourstuff{12mm}{-20mm}{10mm}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容