Simplificando e editando o loop \foreach

Simplificando e editando o loop \foreach

Usei o seguinte código da resposta paraessa questão

\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}

insira a descrição da imagem aqui

Como simplificar e como deixar os cantos pontiagudos, lembrando o desenho a seguir.

insira a descrição da imagem aqui

Responder1

Você só precisa redesenhar o pic. Como suas cores não possuem realmente um padrão, há pouco para simplificar.

\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}

insira a descrição da imagem aqui

Adicione tudo a um loop (observe que a ordem é importante!).

\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}

(mesma saída acima)

informação relacionada