在结束节点前的停止线

在结束节点前的停止线

考虑一条线

\draw[->] (0,0) -- (1, 0);

(0,0)是否有可能以某种方式使线停止在从起始坐标到终止坐标的路程的例如 70% 处(1,0),即箭头位于(0.7,0)

当然,无需手动明确计算该点。我想定义两个端点,然后在我们真正到达该端点之前画线并停止。

编辑:我希望这个 ASCII 艺术能让它更清楚一点:

(0,0)         (.7,0)     (1,0)
  --------------->

答案1

可能的解决方案之一是使用decorations.markingsTikZ 库:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                decorations.markings}


\begin{document}
    \begin{tikzpicture}[
decoration={markings,% switch on markings
            mark=at position 0.7 with {\arrow{Straight Barb}}}
]
\draw [postaction={decorate}] (0,0) -- (1,0);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

附录:

从 OP 评论中可以看出,需求非常不寻常(问题中不清楚)。他/她似乎在寻找类似这样的东西:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                decorations.markings}


\begin{document}
    \begin{tikzpicture}[
decoration={markings,% switch on markings
            mark=at position 0.7 with {\arrow{Straight Barb}}}
]
\draw [postaction={decorate}] (0,0) -- (1,0);
\draw [-Straight Barb] (0,-2mm) -- (0.7*1,-2mm);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

如果你画第二条线,结果会怎样?

\draw [-Straight Barb] (0,-2mm) -- (0.7,-2mm);

或者

\draw [-Straight Barb, shorten >=3mm] (0,-2mm) -- (1,-2mm);

坦白说,我不明白你的用意。

答案2

为了完成 Zarko 的回答,可以使用calc库将线停止在其长度的一定百分比处。shorten当我们确切知道要缩短的距离时,选项允许这样做,但是当这个距离未知或想要百分比时,calc会更好。

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                    positioning,
                calc}

\begin{document}
    \begin{tikzpicture}

\node[circle, inner sep=1pt, fill] (A) {};
\node[circle, inner sep=1pt, fill, right=2cm of A] (B) {};

\node[circle, inner sep=1pt, fill] at (0,5mm) {};
\node[circle, inner sep=1pt, fill] at (4,15mm) {};

\draw [-Straight Barb] (A) -- node[above, sloped] {70\%} ($(A)!.7!(B)$);
\draw [-Straight Barb] (0,5mm) -- node[above, sloped] {95\%}  ($(0,5mm)!.95!(4,15mm)$);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容