在 Tikz 中围绕椭圆绘制循环

在 Tikz 中围绕椭圆绘制循环

我正在尝试在 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}

相关内容