关于 TikZ \draw[rotate=angle] 感到困惑

关于 TikZ \draw[rotate=angle] 感到困惑

今天我尝试使用旋转椭圆,但徒劳无功,最后却以一种极其蹩脚的方式让它工作。为了跟进,我翻阅了手册(第 26 页):

您还可以使用椭圆操作将椭圆附加到路径。除了指定单个半径外,您还可以指定两个半径,一个用于 x 方向,一个用于 y 方向,以 和 分隔:

\tikz \draw (0,0) ellipse (20pt and 10pt);

\tikz \draw[rotate=30] (0,0) ellipse (6pt and 3pt);要绘制一个轴既不是水平也不是垂直的椭圆,而是指向任意方向(类似“旋转的椭圆”),您可以使用变换,稍后将对此进行解释。顺便说一下,小椭圆的代码是。

现在,也许我只是对转换理解不够透彻,但我假设:

\draw[rotate=angle] (x,y) ellipse (width,height);

会产生一个以 (x,y) 为中心,旋转 和 的椭圆,angle其偏心率为宽度和高度。相反,我似乎得到了一个旋转的椭圆关于如果 (x,y) 不是 (0,0),则为原点。

这是我的测试:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\draw (0,0)--(10,0);
\foreach \x in {0,...,10}
  \draw (\x,0)--(\x,-.1) node[anchor=north] {\x};

\draw (0,0)--(0,10);
\foreach \y in {0,...,10}
  \draw (0,\y)--(-.1,\y) node[anchor=east] {\y};

\draw[help lines] (0,0) grid (10,10);

\draw (5,5) ellipse (10pt and 20pt);  
\draw[rotate=45] (5,5) ellipse (10pt and 20pt);

\end{tikzpicture}
\end{document}

这将按预期在 (5,5) 处生成第一个椭圆。但是,第二个椭圆显示为旋转的,但位置约为 (0,7)。我遗漏了什么?为什么旋转是“围绕”某个东西旋转,而不是直接将其放在坐标处并就地旋转?

图像

答案1

您可以使用围绕点rotate around={degree:coordinate}旋转坐标系:degreecoordinate

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw (0,0)--(10,0);
\foreach \x in {0,...,10}
  \draw (\x,0)--(\x,-.1) node[anchor=north] {\x};

\draw (0,0)--(0,10);
\foreach \y in {0,...,10}
  \draw (0,\y)--(-.1,\y) node[anchor=east] {\y};

\draw[help lines] (0,0) grid (10,10);

\draw (5,5) ellipse (10pt and 20pt);  
\draw[rotate=45] (5,5) ellipse (10pt and 20pt);
\draw[rotate around={45:(5,5)},red] (5,5) ellipse (10pt and 20pt);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

完成答案:在选项之前:rotate around可以使用这个(可以做得更短......)

\documentclass[11pt]{scrartcl}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
 \draw (0,0)--(10,0);
\foreach \x in {0,...,10}
  \draw (\x,0)--(\x,-.1) node[anchor=north] {\x};

\draw (0,0)--(0,10);
\foreach \y in {0,...,10}
  \draw (0,\y)--(-.1,\y) node[anchor=east] {\y};

\draw[help lines] (0,0) grid (10,10);
\draw[red] (5,5) ellipse (4 and 2);   

\begin{scope}[shift={(5,5)}] 
    \begin{scope}[rotate=90]
        \begin{scope}[shift={(-5,-5)}]
            \draw (5,5) ellipse (4 and 2); 
        \end{scope} 
    \end{scope} 
\end{scope}

\end{tikzpicture}
\end{document} 

在此处输入图片描述

相关内容