\foreach 루프 도면의 한 부분 수정

\foreach 루프 도면의 한 부분 수정

답변부터이것그리고이것질문;

다음 코드를 사용하여 십자가를 그렸습니다.

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

여기에 이미지 설명을 입력하세요

\foreach다음 도면을 생성하기 위해 루프 의 한 부분을 수정하는 것이 가능합니까 ?

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

답변1

전적으로. 을 사용하기만 하면 됩니다 \ifnum. \edge이전 답변에서 단축된 답변을 사용할 때 특히 원활하게 작동하므로 불필요한 반복을 피할 수 있습니다. 좀 더 자세히 정의하자면

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

여기서 \i180과 같으면 길이의 선이 있는 2.5반면 다른 모든 경우에는 단위 길이 \i라는 것을 알 수 있습니다.1.05

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

여기에 이미지 설명을 입력하세요

그리고

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

여기에 이미지 설명을 입력하세요

관련 정보