Modificar una parte de un dibujo de bucle \foreach

Modificar una parte de un dibujo de bucle \foreach

De la respuesta aesteyestepreguntas;

Usé el siguiente código para dibujar una cruz.

\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{Cross 3}
\begin{tikzpicture}[line join=round, line cap=round]
\def\edge{
(.5,.5) -- ++ (0,1.05) to [out=0,in=-90] ++ (.5,.5) to [out=90,in=0] ++ (-.5,.5) to [out=90,in=0] ++ (-.5,.5) to [out=180,in=90] ++ (-.5,-.5) to [out=-180,in=90] ++ (-.5,-.5)  to [out=-90,in=180] ++ (.5,-.5) -- ++ (0,-1.05)}
\draw[line width=.16cm,blue!60!black, fill=blue!80!black] (.5,.5) foreach \i in {0,90,180,270}{[rotate=\i] -- \edge} -- cycle;
\end{tikzpicture}
\end{frame}
\end{document}

ingrese la descripción de la imagen aquí

¿Es posible modificar una parte del \foreachbucle para producir los siguientes dibujos?

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Respuesta1

Absolutamente. Sólo necesitas usar \ifnum. Esto funciona especialmente bien cuando usas la versión abreviada \edgede mi respuesta anterior, lo que evita repeticiones innecesarias. Con más detalle, definamos

\def\edge{
(.5,.5) -- ++ \ifnum\i=180 (0,2.5) \else (0,1.05)\fi
foreach \j in {0,90,180}  {to [out=\j,in=\j,looseness=1.6] ++ (\j+90:1)}
}

Aquí puedes ver que si \ies igual a 180, habrá una línea de longitud 2.5mientras que para todos los demás \itendrá 1.05unidades de longitud.

\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{Cross 3}
\begin{tikzpicture}[line join=round, line cap=round]
\def\edge{
(.5,.5) -- ++ \ifnum\i=180 (0,2.5) \else (0,1.05)\fi
foreach \j in {0,90,180}  {to [out=\j,in=\j,looseness=1.6] ++ (\j+90:1)}
}
\draw[line width=.16cm,blue!60!black, fill=blue!80!black] (.5,.5)
 foreach \i in {0,90,180,270}{[rotate=\i] -- \edge} -- cycle;
\end{tikzpicture}
\end{frame}
\end{document}

ingrese la descripción de la imagen aquí

Y

\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\begin{document}
\begin{frame}[t]
\frametitle{Cross 3}
\begin{tikzpicture}[line join=round, line cap=round]
\def\edge{
(.5,.5) -- ++ \ifnum\i=180 (0,2.5)to[out=90,in=90] ++ (-1,0) \else (0,1.05)
foreach \j in {0,90,180}  {to [out=\j,in=\j] ++ (\j+90:1)} \fi
}

\draw[line width=.16cm,blue!60!black, fill=blue!80!black,looseness=1.6] 
(.5,.5)
 foreach \i in {0,90,180,270}{[rotate=\i] -- \edge} -- cycle;
\end{tikzpicture}
\end{frame}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada