在范围变换中使用坐标表达式

在范围变换中使用坐标表达式

坐标计算功能非常强大,尤其是positioning使用库时。我希望能够利用这种相对计算来计算图形或其他子部分的项,例如和项xshift,但我看不出如何在应用键的情况下轻松访问组件或执行其他常规计算。yshiftscopecoordinate

例如,


% assume <something> has non-0 x coordinate, so offset does too - I don't want to shift horizontally at all
\coordinate[below = of <something>] (offset)
\begin{scope}[yshift = <y component of (offset)>]
  \draw (0,0) rectangle (1,1);
\end{scope}

在本例中,我使用简单的相对定位below = of <something>来计算垂直偏移。我希望能够使用这个垂直偏移在定义的范围内移动子绘图的坐标系。

我意识到可以将未修饰的(coordinate name)直接传递给 2Dshift键,但所有变换键(shift包括)似乎都无法解析任何数学运算,即使使用calc库也是如此。因此,使用这些键很难表达任何非平凡的内容。

做我在上面的代码中所描绘的事情的最直接的方法是什么,指定yshift使用命名的 y 维度coordinate

答案1

以下有两种方法:

  • 用于\path (offset);\pgfgetlastxy{\xcoord}{\ycoord};获取 y 维度
  • 按照@Qrrbrbirlbel 的建议,按(0,0)移动shift = {(center|-offset)}shift = {(0,0|-offset)}相对于(0,0)

图示示例两者的同心圆均位于 y 方向偏移的位置:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newdimen\xcoord
\newdimen\ycoord
\begin{document}
\begin{tikzpicture}
  \node (center) at (0,0) {+};
  \node[anchor=west] at (center) {Center};
  \coordinate [above right = 3cm of center] (P);
  \coordinate[below = of P] (offset);
  \node at (offset) {$\bullet$};
  \path (offset);% use the (offset) point
  \pgfgetlastxy{\xcoord}{\ycoord};% extract x,y values of last used point
  \begin{scope}[yshift = \ycoord]
    \draw (0,0) circle[radius=2pt];
  \end{scope}
  \begin{scope}[shift = {(center|-offset)}]
    \draw (0,0) circle[radius=4pt];
  \end{scope}
\end{tikzpicture}
\end{document}

y 轴偏移圆

相关内容