在 TikZ 中指定行长度

在 TikZ 中指定行长度

(如果这个问题之前有人问过,我很抱歉,很难相信它没有被问过,但我找不到任何相关资料。)我想画一条线穿过两个可以指定宽度的点。这条线应该从第一个给定点向第二个点延伸,然后继续延伸直到给定的长度。我希望能够输入类似的东西\draw[length=5] (0,0)--(1,2);来实现这一点。

以下是我目前所掌握的信息:

\documentclass{article}

\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}
        \draw (0,0)--(1,2);
    \end{tikzpicture}
\end{document}

同样,问题在于它画了一条终止于两个给定点的线,但我只希望它终止于一个点(第一个点),并继续延伸直到在另一端用完指定的长度。我知道这可以通过始终使用一些数学知识手动计算坐标来实现,但这太乏味了,一定有更好的方法!提前致谢。

答案1

如果知道角度,则可以使用相对极坐标,例如\draw (1,1) -- +(30:2cm);+极坐标前的 表示(1,1)应使用前一个坐标( )作为原点。如果使用++(30:2cm),当前点也会更新,因此如果向路径添加另一个相对坐标,则该坐标的原点将是第一段的终点。

如果有两个点,则可以使用calc库的功能。($(a)!3cm!(b)$)是距离 3cm 的坐标,位于通过和 的a线上。因此,从到该点画一条线。ab\draw (a) -- ($(a)!3cm!(b)$);a

在此处输入图片描述

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \draw (0,0) grid (4,3);

  \node[inner sep=1pt,fill, label=above left:a] (a) at (1,1) {};
  \node[inner sep=1pt,fill, label=above left:b] (b) at (3,2) {};

  \draw [red] (a) -- +(30:2cm);

  \draw [blue] (a) -- ($(a)!3cm!(b)$);

\end{tikzpicture}
\end{document}

相关内容