符号坐标与文字坐标

符号坐标与文字坐标

我正在尝试绘制一个 yz 轴,并在其上方绘制一个旋转的 y'z' 轴,用于一些数学运算。以下代码

\newcommand{\axislength}{2}
\draw [->, -latex]
(0,0) coordinate (O) node[above left]  {} 
-- (0,\axislength) coordinate (Z) node[above]  {Z}; 
\draw [->, -latex]
(O) -- (\axislength,0) coordinate (Y) node[right] {Y};
\draw[->, -latex, dotted,rotate around={30:(0,0)}] (O) -- (Z) node[above left] 
{Z'};

生产

错误的结果

然而

\newcommand{\axislength}{2}
\draw [->, -latex]
 (0,0) coordinate (O) node[above left]  {} 
 -- (0,\axislength) coordinate (Z) node[above]  {Z}; 
 \draw [->, -latex]
(O) -- (\axislength,0) coordinate (Y) node[right] {Y};
  \draw[->, -latex, dotted,rotate around={30:(O)}] (0,0) -- (0,\axislength) 
  node[above left] {Z'};

生产

正确结果

我所做的只是更改了最后一行。显然,当我引用 (O) 时,LaTex 不会将其准确解释为坐标。但是,在大多数情况下,我能够将坐标名称放在 Latex 期望看到实际坐标的位置,并且它有效。我的工作有错误吗,或者有些函数只是能够解释我所说的坐标名称,而其他函数则不能?

答案1

Z,标准变换不会变换符号坐标。(但是,你可以变换形状通过使用 键transform shape,您可以通过说 来转换低级形状\pgflowlevelsynccm。)可以使用 来转换符号坐标transform canvas。但请注意,使用此键时要非常小心。它确实不是变换边界框。但是,它也非常强大,因为它允许您旋转球形阴影,而普通变换不会对其进行变换。不过,transform canvas只有在绝对需要时才使用。

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[font=\sffamily,pics/brimborium/.style={code={\draw [->, -latex] (0,0) coordinate (O) node[above left]  {} 
-- (0,\axislength) coordinate (Z) node[above]  {Z}; 
\draw [->, -latex] (O) -- (\axislength,0) coordinate (Y) node[right] {Y};}}]
\newcommand{\axislength}{2}
\begin{scope}[local bounding box=explicit,xshift=-8cm]
 \pic {brimborium};
 \draw[->, -latex, dotted,rotate around={30:(0,0)}] (0,0) -- (0,\axislength)   node[above left] {Z'};
\end{scope}
\path (explicit.north) node[above]{explicit coordinates};
\begin{scope}[local bounding box=symbolic,xshift=-4cm]
 \pic {brimborium};
 \draw[->, -latex, dotted,rotate around={30:(0,0)}] (O) -- (Z) node[above left] {Z'};
\end{scope}
\path (symbolic.north) node[above]{symbolic coordinates};
\begin{scope}[local bounding box=canvas,xshift=0cm]
 \pic {brimborium};
 \draw[->, -latex, dotted,transform canvas={rotate around={30:(0,0)}}] (O) -- (Z) node[above left] {Z'};
\end{scope}
\path (canvas.north) node[above]{canvas transformation};
\end{tikzpicture}
\end{document}

在此处输入图片描述

如果在第一个范围内使用node[above left,transform shape] {Z'},您将获得与最后一个范围相同的输出。

相关内容