连接到中心以外的点的节点

连接到中心以外的点的节点

我正在尝试将一条边连接到一个目标点偏离中心的节点。我希望这条边以箭头结束于节点的边界,而不是进入框内。

将边连接到节点的一侧很容易:

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

但是绘制到和的中间位置(x)(x.west)继续进入节点而不是停在边界:

\begin{tikzpicture}
\node (x) [draw,minimum size=1 cm] at (0,0) {x};
\node (y) [draw,minimum size=1 cm] at (2 cm,2 cm) {y};
\draw[->] (x) -- ($ (y.west)!0.5!(y) $);
\end{tikzpicture}

我怎样才能制作一条具有相同角度的边,(x) -- ($ (y.west)!0.5!(y) $)但它却在边界上绘制箭头而不是进入节点?

答案1

使用 TikZ 库,intersections您可以轻松找到节点矩形上的点。

我们给y节点一个路径名:yborder
我们使用一个\path命令获取从(x)到 的路径($ (y.west)!0.5!(y) $)并将其命名为xyline

我们name intersections={of=yborder and xyline}得到名为intersections-1intersections-2、...的坐标
。在我们的例子中,只有一个交点,所以intersection-1就这样。

(PGF/TikZ 手册展示了如何处理具有多个命中的路径交叉点。)

代码

\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}[every node/.style={draw,minimum size=1 cm}]
    \node                     (x) at (0cm,0cm) {x};
    \node [name path=yborder] (y) at (2cm,2cm) {y};
    \path [name path=xyline ] (x) -- ($ (y.west)!0.5!(y) $);
    \fill [red]               ($(y.west)!0.5!(y)$) circle[radius=1pt]; % Where's my point?
    \draw [name intersections={of=yborder and xyline},->]
                              (x) -- (intersection-1);
\end{tikzpicture}
\begin{tikzpicture}[every node/.style={circle,draw,minimum size=1 cm}]
    \node                     (x) at (0cm,0cm) {x};
    \node [name path=yborder] (y) at (2cm,2cm) {y};
    \path [name path=xyline ] (x) -- ($ (y.west)!0.5!(y) $);
    \fill [red]               ($(y.west)!0.5!(y)$) circle[radius=1pt]; % Where's my point?
    \draw [name intersections={of=yborder and xyline},->]
                              (x) -- (intersection-1);
\end{tikzpicture}
\end{document}

输出

矩形界

答案2

您可以使用shorten

\draw[->,shorten >=10pt] (x) -- ($ (y.west)!0.5!(y) $);

代码:

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

\begin{document}
\begin{tikzpicture}
\node (x) [draw,minimum size=1 cm] at (0,0) {x};
\node (y) [draw,minimum size=1 cm] at (2 cm,2 cm) {y};
\draw[->] (x) -- (y.west);
\end{tikzpicture}
\begin{tikzpicture}
\node (x) [draw,minimum size=1 cm] at (0,0) {x};
\node (y) [draw,minimum size=1 cm] at (2 cm,2 cm) {y};
\draw[->,shorten >=10pt] (x) -- ($ (y.west)!0.5!(y) $);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容