![在 TikZ 中根据角度命令绘制线条](https://linux22.com/image/246080/%E5%9C%A8%20TikZ%20%E4%B8%AD%E6%A0%B9%E6%8D%AE%E8%A7%92%E5%BA%A6%E5%91%BD%E4%BB%A4%E7%BB%98%E5%88%B6%E7%BA%BF%E6%9D%A1.png)
我正在尝试使用以下代码在圆的周长之间画一条线,--(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}