在 TikZ 中旋转

在 TikZ 中旋转

我有以下代码

\documentclass{article}
\usepackage{graphicx,tikz}
\begin{document}
\begin{tikzpicture}
\draw[ultra thick] (-1,0) -- (1,0);
\draw[ultra thick] (0,0) -- (0,2);
\end{tikzpicture}
\rotatebox{115}{\begin{tikzpicture}
\draw[ultra thick] (-1,0) -- (1,0);
\draw[ultra thick] (0,0) -- (0,2);
\end{tikzpicture}}
\end{document} 

给予

在此处输入图片描述

这幅图应该代表投掷(风格化的)钉子后的两种可能状态。图中的角度\rotatebox是通过反复试验获得的。我想知道我是否可以用它tikz来完成同样的工作而无需猜测。

答案1

是的,TiZ 可以做到这一点。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[ultra thick] (-1,0) -- (1,0);
\draw[ultra thick] (0,0) -- (0,2);
\end{tikzpicture}
\begin{tikzpicture}[rotate={atan2(1,2)+90}]
\draw[ultra thick] (-1,0) -- (1,0);
\draw[ultra thick] (0,0) -- (0,2);
\end{tikzpicture}
\end{document} 

在此处输入图片描述

好的,让我们让 TiZ 进行计算。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[ultra thick] (-1,0) -- (1,0);
\draw[ultra thick] (0,0) -- (0,2);
\end{tikzpicture}
\begin{tikzpicture}[globalize angle/.code={\xdef#1{\n1}}]
% the points (0,2) and (-1,0) are the ones you want to be horizontal
\path let \p1=($(0,2)-(-1,0)$),\n1={180-atan2(\y1,\x1)} in 
[globalize angle=\myangle];
\begin{scope}[rotate=\myangle]
\draw[ultra thick] (-1,0) -- (1,0);
\draw[ultra thick] (0,0) -- (0,2) coordinate(aux);
\end{scope}
\end{tikzpicture}
\end{document} 

相关内容