我有一个电路,我想显示电流在这个电路中如何移动,我使用这个代码:
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usepackage{animate}
\usepackage{circuitikz}
\begin{document}
\begin{animateinline}[auto play]{1}
\multiframe{2}{i=0+0.2}{
\begin{circuitikz}
\draw (0,0)
to[V,v=$U_q$] (0,2) % The voltage source
to[short] (2,2)
to[R=$R_1$] (2,0) % The resistor
to[short] (0,0);
\draw (2,2)
to[short] (4,2)
to[R=$R_2$] (4,0)
to[short] (2,0);
\draw (0,0)
to[thick,color=red, -*] (0,\i) % The voltage source
to[thick,color=red, -*] (\i,2)
to[thick,color=red, -*] (2,{2-\i}) % The resistor
to[thick,color=red, -*] ({2-\i},0);
\draw (2,2)
to[thick,color=red, -*] ({2+\i},2)
to[thick,color=red, -*] ({2+\i},0)
to[thick,color=red, -*] ({4-\i},0);
\end{circuitikz}}
\end{animateinline}
\end{document}
在这个动画中,我将解释欧姆定律,并展示电流如何在导体中移动并通过电阻器减速
更新 我修改了代码,运行良好,但我需要显示电流如何通过电阻器减慢,有人可以帮我完成这个代码吗?
\documentclass[border=30pt, tikz]{standalone}
\usepackage{tikz,tikz-3dplot}
\usepackage{xparse}
\usepackage{animate, calc}%%%%%%%%%%%%
\usepackage{animate}
\usepackage{circuitikz}
\ExplSyntaxOn
\NewDocumentCommand { \xifnum } { }
{
\fp_compare:nTF
}
\ExplSyntaxOff
\begin{document}
\foreach \x in {0.1,0.2,...,4}{
\begin{tikzpicture}
\begin{circuitikz}
\draw (0,0)
to[V,v=$U_q$] (0,2) % The voltage source
to[short] (2,2)
to[R=$R_1$] (2,0) % The resistor
to[short] (0,0);
\draw (2,2)
to[short] (4,2)
to[R=$R_2$] (4,0)
to[short] (2,0);
\xifnum{\x<2}{\fill[color=red] (0,\x) circle (3pt);}{\fill[color=red] ({\x-2},2) circle (3pt);}
\end{circuitikz}
\end{tikzpicture}
}
\end{document}
答案1
我已经整理了你的代码,并以不同的速度通过 R1 继续动画。我已经不是使用动画包,因为看起来我的 pdf 查看器(evince)无法显示这些动画。
我使用相对坐标(++
)以获得更好的可维护性,我使用命名坐标以获得更好的可读性,我已经定义了一个环境和一个命令以避免代码重复,我已经定义了三个命令以便于定制,并且我已经将 for 循环分成几个循环因为我认为这样更容易。
\stepconductor
您可以通过更改和来自定义速度\stepresistor
。建议选择 1 为它们的倍数。
您可以通过更改来自定义红点的大小\currentradius
。
\documentclass[border=30pt, tikz]{standalone}
\usepackage{circuitikz}
\newcommand{\stepconductor}{.1}
\newcommand{\stepresistor}{.025}
\newcommand{\currentradius}{3pt}
\newenvironment{mycircuit}{%
\begin{circuitikz}
\draw (0,0) coordinate (V-)
to[V,v=$U_q$] ++(0, 2) coordinate (V+)
to[short] ++(2, 0) coordinate (R1+)
to[R=$R_1$] ++(0,-2) coordinate (R1-)
to[short] (V-);
\draw (R1+)
to[short] ++(2, 0) coordinate (R2+)
to[R=$R_2$] ++(0,-2) coordinate (R2-)
to[short] (R1-);
% ensure that tikzpicture has always the same size (independent of the position of the current)
\path (V+) -- ++(0, +\currentradius);
\path (V-) -- ++(0, -\currentradius);
}{%
\end{circuitikz}%
}
\newcommand{\current}[2]{%
\path (#1) -- node[pos=\p, circle, fill=red, minimum size=2*\currentradius, inner sep=0pt]{} (#2);
}
\begin{document}
\foreach \p in {0, \stepconductor, ..., 1}{
\begin{mycircuit}
\current{V-}{V+}
\end{mycircuit}
}
\foreach \p in {0, \stepconductor, ..., 1}{
\begin{mycircuit}
\current{V+}{R1+}
\end{mycircuit}
}
\foreach \p in {0, \stepresistor, ..., 1}{
\begin{mycircuit}
\current{R1+}{R1-}
\end{mycircuit}
}
\foreach \p in {0, \stepconductor, ..., 1}{
\begin{mycircuit}
\current{R1-}{V-}
\end{mycircuit}
}
\end{document}
我使用以下命令将 pdf 转换为 gif(感谢亨利·孟克):
convert -density 300 -delay 8 -loop 0 -background white -alpha remove main.pdf main.gif