
Я хочу создать анимацию Beamer
для аппроксимации площади круга правильными многоугольниками. Для этого мне нужно наложить друг на друга концентрические многоугольники. Анимация будет перекрывающейся части. Я пробую с помощью следующего кода
\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}
При компиляции это выдает ошибку File ended while scanning use of \pgffor@next.
Если я удаляю \only<+>
часть, код работает нормально. Как мне получить анимацию в этом случае?
P.S.:Также я хочу соединить центр с вершинами каждого полигона, чтобы разбить весь полигон на треугольники. Как мне этого добиться? Спасибо заранее.
решение1
Пытаться:
\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}
Инструкция only<+>
должна быть в группе с рисунками узлов, т.е. в вашем коде пропущена пара фигурных скобок (определяющих группу). Смотрите комментарии в MWE выше.
Редактировать: По второму вопросу: вам нужно добавить новый цикл, в котором вы рисуете линии между центрами полигонов и их углами. Полная версия MWE с этим циклом:
\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}
Для последнего полигона результат: