在 TikZ 中根据角度命令绘制线条

在 TikZ 中根据角度命令绘制线条

我正在尝试使用以下代码在圆的周长之间画一条线,--(b)++(135:16pt)我遇到的问题就是 ,它似乎将其绘制到(b)并忽略了++后面的部分,有没有办法将它括起来以便将其绘制到((b)++(135:16pt))。此外,坐标 的定义也是如此(c),它认为它与(b)不相同(b)++whatever

\begin{document}
\begin{center}
\begin {tikzpicture}[scale=1]
\coordinate (a) at (0pt,0);
\coordinate (b) at (130pt,0);
\coordinate(c) at (b)++(0,10pt);
\draw (a) circle (28pt) (a) circle (22pt) (a)circle(20pt);
\draw (b) circle (16pt) (b) circle (12pt) (b)circle(10pt);
\draw(a)++(55:28pt)--(b)++(135:16pt);
\end {tikzpicture}
\end{center}
\end{document}

答案1

有几种方法可以做到这一点。其中一种方法是通过打击乐。

下面通过一个例子来展示前两种技术。稍后我会展示一个更好的例子。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{center}
\begin {tikzpicture}[scale=1]
\coordinate (a) at (0pt,0);
\coordinate (b) at (130pt,0);
\coordinate(c) at (b)++(0,10pt);
\draw (a) circle (28pt) (a) circle (22pt) (a)circle(20pt);
\draw (b) circle (16pt) (b) circle (12pt) (b)circle(10pt);
% First techique:
\draw (a)+(55:28pt)  coordinate (a@55)
      (b)+(135:16pt) coordinate (b@135)
      (a@55) -- (b@135);
% Second technique (requires calc.)
\draw ($(a)+(55:28pt)$) -- ($(b)+(-15:16pt)$);
\end {tikzpicture}
\end{center}
\end{document}

此示例基于您的代码,但不太易于维护。例如,如果一个圆的半径发生变化,您将不得不进行多次更改。下面显示了如何克服这个问题。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{center}
\begin {tikzpicture}[scale=1]
\draw let \n{first  outer}={28pt},
          \n{first  middle}={20pt},
          \n{first  inner}={10pt},
          \n{second outer}={16pt},
          \n{second middle}={12pt},
          \n{second inner}={10pt},
          \n{first angle}={55},
          \n{second angle}={135}
      in
      (0,0)     coordinate (first centre)
      (130pt,0) coordinate (second centre)
      \foreach \radius in {outer,middle,inner} {
          (first centre)  circle (\n{first \radius})
          (second centre) circle (\n{second \radius})
      }
      ($(first centre) +(\n{first angle}:\n{first outer})$) --
      ($(second centre) +(\n{second angle}:\n{second outer})$);
\end {tikzpicture}
\end{center}
\end{document}

相关内容