두 영역을 색칠하기

by Lee Yeohyeon
481 views

[기록용]

코드 출처: https://tex.stackexchange.com/questions/545189/how-can-i-shade-the-two-regions?atw=1

이번에도 역시 TikZ의 신 슈뢰딩거의 고양이님의 답변이다. 첫 번째 솔루션인 아래 코드에서는 구체적인 점의 좌표를 하나씩 지정하고 각 호를 직접 그리되 fill 옵션을 주어 원하는 영역을 채우는 방법을 사용하였다.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=2]
  \coordinate[label=below:$A$] (A) at (-2,0);
  \coordinate[label=below:$B$] (B) at (0,0);
  \coordinate[label=right:$C$] (C) at (0,2);
  \coordinate[label=right:$E$] (E) at (0,1);
     \coordinate[label=below:$F$] (F) at (-1,0);
 \draw[ultra thick] (A)--(B)--(C);
 \draw[ultra thick,fill=blue!20] (C) arc[start angle=90, end angle=180, radius=2]
  arc[start angle=180, end angle=0, radius=1]
  arc[start angle=270, end angle=90, radius=1];
\node at (0.2,0.5) {$r$};
\node at (-0.5,-0.2) {$r$};
\node at (-2,0) {$\bullet$};
\node at (0,0) {$\bullet$};
\node at (0,2) {$\bullet$};
\node at (0,1) {$\bullet$};
\node at (-1,0) {$\bullet$};
\node at (-0.5,0.5) {$a$};
\node at (-1.2,1.2) {$b$};
\end{tikzpicture}
\end{document}

반면에 두 번째 솔루션인 아래 코드는 좀 더 새련된 방법인 것 같다. 그런데, 내가 TikZ를 잘 몰라서 이 코드가 bullet을 직접 찍지 않은 것 그리고 코드가 더 짧다는 것 외에는 무엇 때문에 더 세련된 것인지 잘 모른.....(말잇못)

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=2]
 \draw[ultra thick,fill=blue!20,
    every coordinate node/.append style={fill=black,inner sep=1.5pt,circle}]
    (0,2) coordinate[label=right:$C$]  (C)
  arc[start angle=90, end angle=180, radius=2]
    coordinate[label=below:$A$] (A)
  arc[start angle=180, end angle=0, radius=1]
    coordinate[label=below:$B$] (B)
  arc[start angle=270, end angle=90, radius=1]
  (A.center) -- coordinate[label=below:$F$] (F)
    node[pos=0.75,below=1.5ex]{$r$} (B)
  --  node[pos=0.25,right=1.5ex]{$r$}
  coordinate[label=right:$E$] (E) (C.center);
 \node at (135:{sqrt(1/2)}) {$a$};
 \node at (135:{1.8}) {$b$};
\end{tikzpicture}
\end{document}
 

Leave a Comment