Beamer と \foreach 演算子

Beamer と \foreach 演算子

これは私が初めて試したフィギュアですビーマー\foreach

皆さんの中には、5 分間の作業で済む人もいるかもしれませんが、私にとっては、午前中のすべてを費やしました...

そこで私の質問は:frame演算子から生成される各イメージを分離するにはどうすればよいですか\foreach\newframe内部は\foreach機能しません。

私の目標動きを持たせること(反時計回りに逆回転)でしたが、2つの質問を絡ませないでください

\documentclass{beamer}%{book}
\usepackage[utf8x]{inputenc}
\usepackage{default}
\usepackage{tikz}
\usetikzlibrary{calc} 
\usetheme{Warsaw} 
\usecolortheme{whale}

\begin{document}
%
\begin{frame}{rotating - test}
%
\begin{center}
\begin{tikzpicture}[scale=2]
\draw[thin,gray,step=0.25] (-1,-1) grid (1,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\draw[->] (-1.5,0)  -- (1.5,0) node[below]{$\phi_0$};
\draw[->] (0,-1.5)  -- (0,1.5) node[left]{$x$};
\draw[thick] (0,0) circle [radius=1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\coordinate (C1) at (1,0);
\coordinate (C2) at (0.86,0.5);
\coordinate (C3) at (0.7,0.7);
\coordinate (C4) at (0.5,0.86);
\coordinate (C5) at (0,1);
\coordinate (C6) at (-0.5,0.86);
\coordinate (C7)at(-0.7,0.7);
\coordinate (C8)at(-0.86,0.5);
\coordinate (C9) at (-1,0);
\coordinate (C10) at (-0.86,-0.5);
\coordinate (C11)at(-0.7,-0.7);
\coordinate (C12) at (-0.5,-0.86);
\coordinate (C13) at (0,-1);
\coordinate (C14) at (0.5,-0.86);
\coordinate (C15) at (0.7,-0.7);
\coordinate (C16) at (0.86,-0.5);
% 
\foreach \Ctest in {(C1),(C2),(C3),(C4),(C5),(C6),
(C7),(C8),(C9),(C10),(C11),(C12),(C13),(C14),(C15),(C16)}{%
\draw [dashed] let \p1 = \Ctest
      in
    (\x1,\y1) -- (0,\y1)
    (\x1,\y1) -- (0,0);
\draw [red,thick,->] let \p1 = \Ctest
      in
    (0,0) -- (0,\y1) node[left] {$x$};
\draw [red,thick] let \p1 = \Ctest,
      \n1={atan2(\x1,\y1)}
      in
  (1,0) arc (0:\n1:1)
  (0,0)--(0.251,0) arc (0:\n1:0.25)--cycle;
\draw[fill=red] \Ctest circle [radius=0.06];
% \newframe %<<================================================
};
\end{tikzpicture}
%
\end{center}
%
\end{frame}
\end{document}

ここに画像の説明を入力してください

1 更新:@Claudio Fiandrino と @Gonzalo Medina の回答を受けて、この図を作成しました。問題は、赤い物体の「軌道」に連続的に増加する円弧を持たせたいのですが、180 度を超える角度が定義されていないことです。 ここに画像の説明を入力してください

答え1

TikZbeamerよく統合されています。特に、TikZコマンドはオーバーレイに対応しているので、例えば次のように記述できます\draw<+-> ...。この特定のケースでは、count=<macro>構文は次のように使用できます(カルディオ・フィアンドリーノループ内の各位置を保持し、<macro>オーバーレイ仕様に使用するには、彼のコメントで提案されている方法を使用します。

\Ctest座標を割り当てる代わりに角度を扱うようにすれば、元のコードは非常に簡素化されます。

\documentclass{beamer}%{book}
\usepackage[utf8x]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc} 
\usetheme{Warsaw} 
\usecolortheme{whale}

\begin{document}

\begin{frame}{rotating - test}

\begin{center}
\begin{tikzpicture}[scale=2]
\draw[thin,gray,step=0.25] (-1,-1) grid (1,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\draw[->] (-1.5,0)  -- (1.5,0) node[below]{$\phi_0$};
\draw[->] (0,-1.5)  -- (0,1.5) node[left]{$x$};
\draw[thick] (0,0) circle [radius=1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\foreach \Ctest[count=\i] in {0,30,45,60,90,120,135,150,180,210,225,240,270,300,315,330,360}{%
\draw<\i> [dashed] 
  (0,0) -- (\Ctest:1) -- (0,{sin(\Ctest)}) 
 node[left,red] {$x$};
\draw<\i> [red,thick] 
  (0,0)--(0.251,0) arc (0:\Ctest:0.25) --  cycle;
\draw<\i> [->,red,thick] 
  (0,0) -- (0,{sin(\Ctest)});
\draw<\i>[fill=red] ({cos(\Ctest)},{sin(\Ctest)}) circle [radius=0.06];
}
\end{tikzpicture}
\end{center}

\end{frame}

\end{document}

ここに画像の説明を入力してください

元のコードは次のとおりです。

\documentclass{beamer}%{book}
\usepackage[utf8x]{inputenc}
%\usepackage{default}
\usepackage{tikz}
\usetikzlibrary{calc} 
\usetheme{Warsaw} 
\usecolortheme{whale}


\begin{document}
%
\begin{frame}{rotating - test}
%
\begin{center}
\begin{tikzpicture}[scale=2]
\draw[thin,gray,step=0.25] (-1,-1) grid (1,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\draw[->] (-1.5,0)  -- (1.5,0) node[below]{$\phi_0$};
\draw[->] (0,-1.5)  -- (0,1.5) node[left]{$x$};
\draw[thick] (0,0) circle [radius=1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\coordinate (C1) at (1,0);
\coordinate (C2) at (0.86,0.5);
\coordinate (C3) at (0.7,0.7);
\coordinate (C4) at (0.5,0.86);
\coordinate (C5) at (0,1);
\coordinate (C6) at (-0.5,0.86);
\coordinate (C7)at(-0.7,0.7);
\coordinate (C8)at(-0.86,0.5);
\coordinate (C9) at (-1,0);
\coordinate (C10) at (-0.86,-0.5);
\coordinate (C11)at(-0.7,-0.7);
\coordinate (C12) at (-0.5,-0.86);
\coordinate (C13) at (0,-1);
\coordinate (C14) at (0.5,-0.86);
\coordinate (C15) at (0.7,-0.7);
\coordinate (C16) at (0.86,-0.5);
% 
\foreach \Ctest[count=\i] in {(C1),(C2),(C3),(C4),(C5),(C6),
(C7),(C8),(C9),(C10),(C11),(C12),(C13),(C14),(C15),(C16)}{%
\draw<\i> [dashed] let \p1 = \Ctest
      in
    (\x1,\y1) -- (0,\y1)
    (\x1,\y1) -- (0,0);
\draw<\i> [red,thick,->] let \p1 = \Ctest
      in
    (0,0) -- (0,\y1) node[left] {$x$};
\ifnum\i<9\relax
{\draw<\i> [red,thick] let \p1 = \Ctest,
      \n1={atan2(\x1,\y1)}
      in
  (0,0)--(0.251,0) arc (0:\n1:0.25)--cycle;
}
\else
{
\draw<\i> [red,thick]
  (0.25,0mm) arc (0:180:0.25);
\draw<\i> [red,thick] let \p1 = \Ctest,
      \n1={atan2(-\x1,\y1)}
      in
  (0,0)--(-0.251,0) arc (0:-\n1:-0.25)--cycle;
}
\fi
\draw<\i>[fill=red] \Ctest circle [radius=0.06];
};
\end{tikzpicture}
%
\end{center}
%
\end{frame}
\end{document}

関連情報