使用 yscale 和 xscale 提取 TiKZ 中任意点的 x,y 坐标

使用 yscale 和 xscale 提取 TiKZ 中任意点的 x,y 坐标

灵感来自提取 TikZ 中任意点的 x,y 坐标,我正在尝试使用一个点的 x 坐标来绘制另一个元素。

但是,当我使用yscalexscale命令时,提取的坐标不会同样放大。以下是一个例子:

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

\begin{document}

\begin{tikzpicture} % First picture
  \draw[->] (0,0) -- (2,0) ;
  \draw[->] (0,0) -- (0,2) ;    

  \coordinate (z) at (0.5,0);
  \path (z) node[below] {$z$};
  \pgfgetlastxy{\XCoord}{\YCoord};

  \coordinate (kink) at (\XCoord,\XCoord);
  \draw[gray] (0,0) -- (kink) node[above, red] {$c$};
\end{tikzpicture}

\begin{tikzpicture}[yscale=4,xscale=6] % Second picture
  \draw[->] (0,0) -- (2,0) ;
  \draw[->] (0,0) -- (0,2) ;    

  \coordinate (z) at (0.5,0);
  \path (z) node[below] {$z$};
  \pgfgetlastxy{\XCoord}{\YCoord};

  \coordinate (kink) at (\XCoord,\XCoord);
  \draw[gray] (0,0) -- (kink) node[above, red] {$c$};
\end{tikzpicture}

\end{document}

第一张图片没有 xscale/yscale 第二幅带有 xscale/yscale 的图片

在第一张图片中,提取的坐标按预期工作。在第二张图片中,我尝试放大整张图片,但提取的坐标现在超出了页面。如何让提取的坐标正确缩放?

答案1

我相信发生这种情况是因为您将 TikZ 转换与 PGF 命令混合用于提取坐标。解决此问题的一种方法是使用提取的尺寸时重置转换\pgfgetlastxy。您可以使用\begin{scope}[reset cm](或使用\path [reset cm] coordinate而不是仅使用\coordinate)来执行此操作:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}[yscale=4,xscale=6]

\draw[->] (0,0) -- (2,0) ;
\draw[->] (0,0) -- (0,2) ;  

\coordinate (z) at (0.5,0);
\path (z) node[below] {$z$};
\pgfgetlastxy{\XCoord}{\YCoord};

\begin{scope}[reset cm]
    \coordinate (kink) at (\XCoord,\XCoord);
\end{scope}

\draw[gray] (0,0) -- (kink) node[above, red] {$c$};

\end{tikzpicture}

\end{document}

相关内容