众所周知,如果我想通过一个常量向量移动绘制命令,我可以这样做。我的问题是,是否可以翻转绘制命令(沿给定方向),或者围绕零点/其他点旋转它(给定一个角度)?
答案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 轴翻转(或类似地沿yscale
y 轴翻转),然后旋转到位。如果您想一步完成此操作,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}