如何自动找到 TikZ 图中节点的位置以供使用?

如何自动找到 TikZ 图中节点的位置以供使用?

我想知道是否可以自动找到图片中节点的位置,以便绘制与该节点连接的其他对象,而无需手动跟踪物理坐标。

例如,我想制作第二个 xy 轴,旋转它,在这个框架内制作一个点(相对于它),然后想从 (0,0) 画一条线到这个点。由于我旋转了第二个框架,因此很难跟踪我在旋转框架中绘制的所有对象的所有物理位置。

如果我能让 TikZ 帮我做这件事,那将很有用。为了清楚说明我的意思,下面是一个 MWE:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\fbox{
  \begin{tikzpicture}
   %first frame, the base frame
   \draw [->] (0,0) -- (1,0) ;
   \draw [->] (0,0) -- (0,1) ;

   %second frame, rotate it by 45 degrees relative to the base
   \draw[rotate around={-45:(2,2)}] [->] (2,2) -- (3,2) ;
   \draw[rotate around={-45:(2,2)}] [->] (2,2) -- (2,3) ;

   %draw a point, relative to the second frame
   \draw[rotate around={-45:(2,2)}] [->] (2,2) -- (2.5,2.5) ;
   \draw[rotate around={-45:(2,2)}] [fill=red] (2.5,2.5) circle(.25ex);

   %now, I want to draw an arrow from (0,0) to the circle above.
   %I can't just do this below, since frame 2 has rotated
   %\draw [->,color=red] (0,0) -- (2.5,2.5) ;    
\end{tikzpicture}
}
\end{document}

Mathematica 图形

我现在需要从 (0,0) 画一个箭头到红色圆圈,但我现在不知道圆圈相对于图片的坐标,因为第 2 帧是旋转的。我必须计算它。我知道它相对于第 2 帧的坐标。

有没有办法标记它,并使用标签自动找到它相对于基准框架(即图纸本身)的坐标?

答案1

是的。您可以在红点处添加一个命名coordinate的 (一种特殊类型的 )node,并使用它来代替显式坐标。

第 17 章对此进行了描述节点及其形状手册。

\documentclass[tikz,border=2mm]{standalone}
\begin{document}
  \begin{tikzpicture}
   %first frame, the base frame
   \draw [->] (0,0) -- (1,0) ;
   \draw [->] (0,0) -- (0,1) ;

   \begin{scope}[rotate around={-45:(2,2)}]
   %second frame, rotate it by 45 degrees relative to the base
   \draw[->] (2,2) -- (3,2) ;
   \draw[->] (2,2) -- (2,3) ;

   %draw a point, relative to the second frame

   \draw [->] (2,2) -- (2.5,2.5) ;
   \draw[fill=red] (2.5,2.5) circle(.25ex) coordinate (red dot);
   \end{scope}


   \draw [->,color=red] (0,0) -- (red dot) ;    
\end{tikzpicture}
\end{document}

相关内容