TikZ:使用移位和旋转时出现问题

TikZ:使用移位和旋转时出现问题

shift我在使用和时遇到问题rotate。在一种情况下,矩形被拉长到移位和旋转的停止点。

但是,如果我在另一种情况下发出相同的命令,矩形将以适当的方式旋转和移动,而不是拉长到停止点。

\documentclass[convert = false, tikz]{standalone}

\begin{document}
\begin{tikzpicture}
  \coordinate (O) at (0, 0);

  \filldraw[outer color = blue!75!pink!60,
  inner color = red!50!black!20, rotate = {-30}, shift = {(2, 0)}] (O) rectangle
  (.75, .5);

  \filldraw[red] (3, 0) rectangle (4, .75);
  \filldraw[red, rotate = {45}, shift = {(1, 0)}] (3, 0) rectangle (4, .75);
\end{tikzpicture}
\end{document}

在此处输入图片描述

我希望拉长的矩形表现得像红色矩形。当我发出rotate和 时shift,我希望矩形表现得像红色矩形,而不是拉伸到该点。

只有当物体位于原点时才会发生这种拉伸。

答案1

这些变换不具有交换性。请考虑以下示例;

\documentclass[convert = false, tikz]{standalone}

\begin{document}
\begin{tikzpicture}
\draw[style=help lines] (0,0) grid[step=1cm] (3,3);
\coordinate (A) at (1,1);
\fill[red,shift={(1,0)}] (A) rectangle (2,2);
\fill[blue,rotate=45,shift={(1,0)}] (A) rectangle (2,2);
\fill[yellow,shift={(1,0)},rotate=45] (A) rectangle (2,2);
\fill[orange,rotate=45] (A) rectangle (2,2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

从最后一个橙色框中可以看到,(2,2)被旋转并变为垂直,但(A)却没有。这是因为(1,1)仍然在原来的位置。简而言之,这就是坐标变换和画布变换之间的区别。

这就是我坚持使用较低级别 PGF 版本转换的原因之一。否则,如果您想对坐标本身进行操作,Jake 的评论就是您的最佳选择。

相关内容