今天我尝试使用旋转椭圆,但徒劳无功,最后却以一种极其蹩脚的方式让它工作。为了跟进,我翻阅了手册(第 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}
旋转坐标系:degree
coordinate
\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}