无法通过矢量平移极点

无法通过矢量平移极点

我的目标是绘制下面的简单图表(仅用于说明目的)。

在此处输入图片描述

\documentclass[tikz,border=12pt]{standalone}

\begin{document}
\begin{tikzpicture}
    \draw (-2,0) circle (1) (2,0) circle (1);
    \draw (60:1) ++(-2,0) -- (120:1) ++(2,0); 
\end{tikzpicture}
\end{document}

但我得到了以下内容。

在此处输入图片描述

为什么不能被认为是向右平移2个单位的(120:1) ++(2,0)点?(120:1)

答案1

现在的写法是,先绘制(120:1),然后将笔(不绘制)向右移动 2 个单位。

解决这个问题的一种方法是使用calc库并将移位分组为一个坐标:

\documentclass[tikz,border=12pt]{standalone}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
    \draw (-2,0) circle (1) (2,0) circle (1);
    \draw (60:1) ++(-2,0) -- ($(120:1)+(2,0)$); 
\end{tikzpicture}
\end{document}

另一种方法,不使用额外的库,是切换到路径并定义起点和终点的坐标。然后在坐标之间画线:

\documentclass[tikz,border=12pt]{standalone}

\begin{document}
\begin{tikzpicture}
    \draw (-2,0) circle (1) (2,0) circle (1);
    \path (60:1) ++(-2,0) coordinate (start) -- (120:1) ++(2,0) coordinate (end);
    \draw (start) -- (end);
\end{tikzpicture}
\end{document}

两种情况下的输出是相同的:

在此处输入图片描述

答案2

另一个选项是将 应用于shift每个坐标。可以使用xshiftyshiftshift。最后一个需要在移位值周围写上外部括号,{(x,y)}如下一个代码所示。

\documentclass[tikz,border=12pt]{standalone}

\begin{document}
\begin{tikzpicture}
    \draw (-2,0) circle (1) (2,0) circle (1);
    \draw ([xshift=-2cm]60:1) -- ([shift={(2cm,0)}]120:1); 
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容