绘制折线的偏移

绘制折线的偏移

恐怕我还有一个后续问题这个

考虑以下 MWE

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
  \begin{tikzpicture}[scale=.25]
    \tikzset{
      ncbar/.style={
        to path=%
        ($(\tikztostart)!#1!90:(\tikztotarget)$)
        -- ($(\tikztotarget)!($(\tikztostart)!#1!90:(\tikztotarget)$)!90:(\tikztostart)$)
      },
      ncbar/.default=0.5cm,
    }

    \draw[red,ultra thin] (0,0) -- (1,2) -- (2,0);
    \draw[blue,ultra thin] (0,0) to[ncbar=0.25cm] (1,2) to[ncbar=0.25cm] (2,0);

  \end{tikzpicture}
\end{document}

得出的结果是: 在此处输入图片描述

请注意,蓝色路径的第二部分的来源并不“正确”。反过来,第二部分蓝色的是不是与红色对应物平行。我该如何解决这个问题?以某种方式重置/设置\tikztostart

附加问题:如何使用圆弧的缺失部分(0.25cm此例中,该圆以红色曲线的顶点为中心,半径为)来弥合两个蓝色部分之间的差距?

答案1

您必须(\tikztotarget)to path定义中包含 final(不包含前面的--):

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
  \begin{tikzpicture}[scale=.25]
\tikzset{
    ncbar angle/.initial=90,
    ncbar/.style={
        to path=($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$)
        -- ($(\tikztotarget)!($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$)!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztostart)$)
        (\tikztotarget)
    },
    ncbar/.default=0.5cm,
}

    \draw[red,ultra thin] (0,0) -- (1,2) -- (2,0);
    \draw[blue,ultra thin] (0,0) to[ncbar=0.25cm] (1,2) to[ncbar=0.25cm] (2,0);

  \end{tikzpicture}
\end{document}

相关内容