根据现有坐标变换形状

根据现有坐标变换形状

我想绘制一个连接两个节点的自定义箭头。不幸的是,我认为这无法通过箭头库来实现:

连接两个节点的箭头的草图

Tikz 为这种情况提供了方便的形状,例如信号箭头。但出于某种原因,似乎没有办法将其沿路径绘制为边缘。

但是我该如何将它转换以使其从一个坐标指向另一个坐标呢?

我的总体想法是:

  1. 拉长箭,即增加箭头和箭尾之间的距离
  2. 旋转箭头,使其真正指向目标

拉伸(部分)和旋转现有形状的惯用方法是什么?

首先,我实际上可以只接受第 1 点,但重要的是,不要拉伸尖端和尾部,而只拉伸“中间端”。

答案1

这是你想要的吗?

在此处输入图片描述

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{positioning, shapes.arrows, calc}

\begin{document}
\begin{tikzpicture}[
    myarrow/.style={single arrow, draw, shape border uses incircle}]

\node[draw, minimum width=2cm] (a) {Node A};
\node[draw, minimum width=2cm, below=2cm of a] (b) {Node B};
\path (a.south west) let \p1 = ($(b.north)-(a.south west)$) in 
    node[myarrow, minimum height={veclen(\x1,\y1)}, shape border rotate={atan2(\y1,\x1)}, anchor=tail] {};

\node[draw, minimum width=2cm, above right=1cm and 2cm of a] (c) {Node C};

\path (b.north east) let \p1 = ($(c.south)-(b.north east)$) in 
    node[myarrow, minimum height={veclen(\x1,\y1)}, shape border rotate={atan2(\y1,\x1)}, anchor=tail] {};
\end{tikzpicture}
\end{document}

答案2

我可能误解了你的问题。

\documentclass[tikz,border=3pt]{standalone} 
\usetikzlibrary{positioning, shapes.arrows, calc,bending,arrows.meta}

\begin{document}
\begin{tikzpicture}

\node[draw, minimum width=2cm] (A) {A};
\node[draw, minimum width=2cm, below=2cm of A] (B) {B};
\draw[-{Implies[bend]},double distance=5pt] (A.-160) to[out=-90,in=90]
(B.north);

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容