
Quero criar uma animação Beamer
para aproximar a área de um círculo com polígonos regulares. Para isso, preciso sobrepor polígonos concêntricos. A animação será da parte sobreposta. Estou tentando com o seguinte código
\documentclass[aspectratio=169,10pt, notheorems]{beamer}
\usepackage{tikz}
\usepackage{pgf}
\usepackage{xcolor}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{frame}
\begin{figure}
\begin{tikzpicture}[scale=2]
\node [draw, minimum size=3cm, circle] at (0,0) {};
\foreach \n in {3,...,10}
\only<+>
{
\node [fill, brown, minimum size=3cm, regular polygon, regular polygon sides=\n] at (0,0) {};
}
\end{tikzpicture}
\end{figure}
\end{frame}
\end{document}
Na compilação, isso produz o erro. File ended while scanning use of \pgffor@next.
Se eu remover a \only<+>
parte, o código funciona bem. Como obtenho a animação nesse caso?
PS.:Além disso, quero unir o centro aos vértices de cada polígono para quebrar todo o polígono em triângulos. Como faço para conseguir isso? Desde já, obrigado.
Responder1
Tentar:
\documentclass[aspectratio=169, notheorems]{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{frame}
\begin{figure}
\begin{tikzpicture}[scale=2]
\node [draw, minimum size=3cm, circle] {};
\foreach \n in {3,...,10}
{ % <-- added
\only<+>
{
\node [fill=brown, minimum size=3cm,
regular polygon, regular polygon sides=\n] {};
}
}% <-- added
\end{tikzpicture}
\end{figure}
\end{frame}
\end{document}
A instrução only<+>
tinha que estar em grupo com desenhos de nós, ou seja, em seu código falta um par de chaves (definição de grupo). Veja os comentários no MWE acima.
Editar: Para a segunda questão: você precisa adicionar um novo loop no qual desenha linhas entre o centro dos polígonos e seus cantos. Completar MWE com este loop é:
\documentclass[aspectratio=169, notheorems]{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{frame}
\begin{figure}
\begin{tikzpicture}[scale=2]
\node [draw, minimum size=3cm, circle] {};
\foreach \n in {3,...,10}
{
\uncover<+> % or \only
{
\node (n\n) [fill=brown, minimum size=3cm,
regular polygon, regular polygon sides=\n] {};
\foreach \i in {1,...,\n} % <--- added
\draw (0,0) -- (n\n.corner \i);% <--- added
}
}
\end{tikzpicture}
\end{figure}
\end{frame}
\end{document}
Para o último polígono o resultado é: