Упрощение и редактирование цикла \foreach

Упрощение и редактирование цикла \foreach

Я использовал следующий код из ответа наэтот вопрос

\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{Spirifankerln using scale}
\begin{tikzpicture}[pics/spiro/.style={code={
 \draw[line width=.1cm,looseness=1,pic actions]
  (0,-2) foreach \X in {0,90,180,270}
  {[rotate=\X]
 -- (0,-2)% node {1}
 to[out=0,in=-90] ++ (0.2,0.1)% node {2}
 to[out=90,in=-180] ++ (1.7,1.7)% node {3}
 to[out=0,in=-90] ++ (0.1,0.2)% node[red] {4}
} -- cycle;}}]
\pic[draw=orange!100,fill=orange!40,scale=2, rotate=11.25]{spiro};
\pic[draw=orange!100,fill=orange!40,scale=2, rotate=-11.25]{spiro};
\pic[draw=orange!100,fill=orange!40,scale=2, rotate=33.75]{spiro};
\pic[draw=orange!100,fill=orange!40,scale=2, rotate=-33.75]{spiro};
\pic[draw=brown!100,fill=brown!40,scale=2, rotate=-22.5]{spiro};
\pic[draw=brown!100,fill=brown!40,scale=2, rotate=22.5]{spiro};
\pic[draw=red!100,fill=red!40,scale=2, rotate=45]{spiro};
\pic[draw=purple!100,fill=purple!40,scale=2]{spiro};
\end{tikzpicture}
\end{frame}
\end{document}

введите описание изображения здесь

Как его упростить и как сделать углы острыми, как на следующем рисунке.

введите описание изображения здесь

решение1

Вам просто нужно перерисовать pic. Поскольку ваши цвета на самом деле не имеют шаблона, упрощать особо нечего.

\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{Spirifankerln using scale}
\begin{tikzpicture}[pics/spiro/.style={code={
  \draw[line width=.1cm,looseness=1,pic actions]
    (0,-2) arc (180:90:2) arc (270:180:2) arc (360:270:2) arc (90:0:2);
  }
}]
  \foreach \i in {-33.75,-11.25,11.25,33.75}
    \pic[draw=orange!100,fill=orange!40,scale=2,rotate=\i]{spiro};
  \pic[draw=brown!100,fill=brown!40,scale=2, rotate=-22.5]{spiro};
  \pic[draw=brown!100,fill=brown!40,scale=2, rotate=22.5]{spiro};
  \pic[draw=red!100,fill=red!40,scale=2, rotate=45]{spiro};
  \pic[draw=purple!100,fill=purple!40,scale=2]{spiro};
\end{tikzpicture}
\end{frame}
\end{document}

введите описание изображения здесь

Добавьте все в цикл (обратите внимание, что порядок имеет значение!).

\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{Spirifankerln using scale}
\begin{tikzpicture}[pics/spiro/.style={code={
  \draw[line width=.1cm,looseness=1,pic actions]
    (0,-2) arc (180:90:2) arc (270:180:2) arc (360:270:2) arc (90:0:2);
  }
}]
  \foreach \i/\clr in {3/orange,1/orange,2/brown,4/red,0/purple} {
    \pic[draw/.expanded=\clr!100,fill/.expanded=\clr!40,scale=2,rotate=\i*11.25]{spiro};
    \pic[draw/.expanded=\clr!100,fill/.expanded=\clr!40,scale=2,rotate=-\i*11.25]{spiro};
  }
\end{tikzpicture}
\end{frame}
\end{document}

(тот же вывод, что и выше)

Связанный контент