我正在尝试在 tikz 中显示磁场环围绕圆形电流流动。我想以一个中心椭圆结束,类似于\draw (0, 0) ellipse (3 and 1)
,它周围有八个“等距”环,每个环大致位于其周长的中心。从一个角度看,它应该看起来像一个圆圈,每个环都等距分布在它周围。我尝试做的第一件事看起来像这样:
我的方法是使用正弦/余弦变换来改变每个环的 x 和 y 坐标,这样我就可以使用循环\foreach
并自动调整坐标,而不必单独绘制每个圆。这是 MWE:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0, 0) ellipse (3 and 1); % central ellipse
\foreach \i in {0,...,7} { % for each of the 8 rings
\def \x {-3*{cos((pi*\i)/4)}}; % function that returns an appropriate x coordinate for the given i value
\def \y {{sin((pi*\i)/4)}}; % ditto for y values
\draw (\x, \y) circle (0.5); % drawing circles @ (x, y)
}
\end{tikzpicture}
\end{document}
并抛出 2 个有关缺少数字/测量单位的错误代码。这是我能让它抛出的最低错误数量。
我尝试过不同的方式和位置来定义\x
和\y
变量,例如\pgfmathsetmacro
,,\edef
并在\foreach
循环之前/内部定义它们,以及更改变量名称以防\x
或\y
命令出现任何奇怪的恶作剧,但这些都对我不起作用。
理想情况下,我还会完成一些简单的水平变换,挤压每个环的水平半径以产生透视的印象,并且每个环(包括主椭圆)都会有一个箭头来指示方向,但这并不那么重要。
如果我对最终结果的描述不够清楚,请告诉我。
先感谢您 :)
答案1
你的想法很好,但你的使用\def
不合理。相反,请使用evaluate
选项\foreach
:
\foreach \i[evaluate=\i as \x using -3*cos((180*\i)/4),
evaluate=\i as \y using sin((180*\i)/4)] in {0,...,7}
注意使用度数而不是弧度。然后你就接近了:
请注意,该语法circle(2)
已弃用。您应该改用circle[radius=2]
。同样,对于椭圆,请使用ellipse[x radius=3, y radius=1]
要改变小圆的偏心率,将它们绘制为椭圆,并x radius
使用 x 坐标更改:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0, 0) ellipse[x radius=3, y radius=1]; % central ellipse
\foreach \i[evaluate=\i as \x using -3*cos((180*\i)/4),
evaluate=\i as \y using sin((180*\i)/4)]
in {0,...,7} {
\draw (\x, \y) ellipse [x radius=\x/6, y radius=.5];
}
\end{tikzpicture}
\end{document}