
이것은 내 첫 번째 피규어입니다.비머와 함께 \foreach
.
여러분 중 일부에게는 5분 정도의 작업이겠지만, 저에게는 아침 내내 시간이 걸렸습니다...
그래서 내 질문은:frame
운영자 가 생성하는 각 이미지를 어떻게 구분할 수 있습니까 \foreach
? 내부 \newframe
가 \foreach
작동하지 않습니다.
내 목표움직임이 있도록 만드는 것이었습니다(시계 반대 방향으로 역방향). 하지만 두 질문을 서로 얽히게 하지 마십시오.
\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
TikZ
beamer
잘 통합되어 있습니다 . 특히 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}