在 TikZ 中旋转和翻转

在 TikZ 中旋转和翻转

众所周知,如果我想通过一个常量向量移动绘制命令,我可以这样做。我的问题是,是否可以翻转绘制命令(沿给定方向),或者围绕零点/其他点旋转它(给定一个角度)?

答案1

calc库可以很容易地做到这一点,但可能还有更简单的方法。这是一个简单的例子

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node (one) at (1,0) {1};
\node (zero) at (0,0) {0};
\draw[thick] (0,0) -- ($(0,0)!-1!(1,0)$); % Flips it   
\draw[red,thick] (0,0) -- ($(0,0)!-1!90:(1,0)$); % Flips it and rotates further 90 deg.
\draw[blue,thick] (0,0) -- ($(0,0)!0.5!45:(1,0)$); %Draws it halfway and rotates 45deg.
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

您可以使用和旋转命令的组合xscale=-1来沿 x 轴翻转(或类似地沿yscaley 轴翻转),然后旋转到位。如果您想一步完成此操作,Tikz 有一个/tikz/cm={a,b,c,d,<coordinate>}选项(v2.10 手册中的 p253)可让您指定 2d 变换矩阵...但手册建议您不要直接使用此选项。

答案3

您可以使用范围。例如:

\foreach \x in {0,90,180,270} {
   \begin{scope}[rotate=\x]
      \draw (0,0) -- (1,0);
   \end{scope}
}

我同意,如果这只是针对一个命令的话,这有些小题大做,但如果你打算旋转几条线、矩形……这是一个优雅的解决方案。

答案4

图片

在此处输入图片描述

代码

\documentclass{scrartcl}
\usepackage{tikz}

\definecolor{myblue}{RGB}{17, 59, 99}
\definecolor{myorange}{RGB}{187, 114, 42}
\definecolor{mybetween}{RGB}{102, 86, 70}

    \def\tikzbox{% 
    \fill[myblue] (-0.1, -0.1) rectangle +(1.6, 3.2); 
    \fill[myorange] (0.8, 0) arc(180:90:0.1cm)  -- (1, 0.1) arc(-90:0:0.1cm) -- %
(1.1, 0.45) arc(-90:90:0.015cm and 0.03cm) -- (1.1, 0.51) arc(-90:90:0.015cm and 0.03cm)%
 -- (1.1, 1) arc(180:90:0.05cm) -- (1.3, 1.05) arc(-90:0:0.05cm) -- (1, 1.8)  arc(210:120:0.05cm) .. controls (1.05cm, 2.2cm) and  (0.9cm, 2.3cm) ..  (0.7, 2.5)%
 .. controls (0.5, 2.7) .. (0.3, 2.7) arc(270:180:0.3cm) -- (0, 3) -- (1.5, 3) --%
 (1.5, 0) -- cycle;  }
\begin{document}


  \begin{tikzpicture}[scale = 2]
  \tikzbox           
  \begin{scope}[cm={-1,0,0,1,(3,0)}]
  \tikzbox     
  \end{scope}
  \begin{scope}[cm={1,0,0,-1,(0,-.1)}]
  \tikzbox     
  \end{scope}
    \begin{scope}[cm={-1,0,0,-1,(3,-.1)}]
  \tikzbox     
  \end{scope}
  \begin{scope}[cm={0.707,0.707,-0.707,0.707,(6,0)}]
  \tikzbox     
  \end{scope}   
  \end{tikzpicture}

\end{document}

相关内容