直线的正交平移

直线的正交平移

我想将一条线向某个方向移动一定量。这里方向是固定的,与线正交。一个困难是,线应该像在原点位置一样绘制。我的解决方案几乎满足了我的要求,只是移动后的线更长,因为它不受节点的限制。

我发现的例子例如在 TikZ 中移动连接节点的线影响线条的绘制方式。

类似的东西(A) edge[shift left=2cm] (B);就很好了。

\documentclass[tikz, border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}
\node (A) at (3,0) {$A$};
\node (B) at (5,1) {$B$};
\path[-]
    (A) edge (B)
    ($(A)!5mm!90:(B)$) edge node{shifted} ($(B)!5mm!-90:(A)$);
\end{tikzpicture}
\end{document}

答案1

(注意:移位的线不关心节点的边界。)

您可以使用提供的简单装饰杰利迪亚兹在此回答

在此处输入图片描述

\documentclass[tikz]{standalone}

\usetikzlibrary{decorations}
\pgfdeclaredecoration{simple line}{initial}{
  \state{initial}[width=\pgfdecoratedpathlength-1sp]{\pgfmoveto{\pgfpointorigin}}
  \state{final}{\pgflineto{\pgfpointorigin}}
}
\tikzset{
   shift left/.style={decorate,decoration={simple line,raise=#1}},
   shift right/.style={decorate,decoration={simple line,raise=-1*#1}},
}

\begin{document}
\begin{tikzpicture}
  \node (A) at (0,0) {A};
  \node (B) at (2,1) {B};

  \path[->,red] (A) edge (B);
  \path[->,blue] (A) edge[shift left=2mm] (B);
  \path[->,orange] (A) edge[shift right=2mm] (B);
\end{tikzpicture}
\end{document}

答案2

另一个解决方案是使用transform canvas,例如:

\documentclass[tikz, border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}
\node (A) at (3,0) {$A$};
\node (B) at (5,1) {$B$};
\path[-]
    (A) edge (B)
\path[-,transform canvas={yshift=5mm,xshift=-2.5mm}]
    (A) edge (B);
\end{tikzpicture}
\end{document}

当然,xshift 和 yshift 取决于您想要实现的与原始线的线条角度和距离。

相关内容