見出し画像

TikZ 実用例(5)~領域図示~

線分で囲まれた領域の図示

座標平面上の線分で囲まれた領域(つまり多角形)の図示は簡単です。

例えば,3点$${\mathrm{A}(1,\;0)}$$,$${\mathrm{B}(3,\;1)}$$,$${\mathrm{C}(2,\;2)}$$ を結んで作る三角形ABCの内部を図示するときには

\begin{tikzpicture}[scale=1]
\coordinate[label=below:A] (A) at (1,0);
\coordinate[label=right:B] (B) at (3,1);
\coordinate[label=above:C] (C) at (2,2);
\filldraw[fill=gray!20!white] (A)--(B)--(C)--cycle;
\draw[->,>=stealth,semithick] (-1,0)--(4,0) node[right]{$x$};
\draw[->,>=stealth,semithick] (0,-1)--(0,4) node[left]{$y$};
\draw(0,0) node[below left]{O};
\end{tikzpicture}

とでもすれば

となります。

関数グラフの囲む領域の図示

次は、放物線などの関数グラフの囲む領域を図示する方法です。
考え方の基本は多角形の場合と同じで,要するに点をつないで囲んであげればイイのです。

例えば,放物線$${y=x^2}$$と直線$${y=x+2}$$で囲まれた領域を図示するときには,2交点の座標が$${(-1,\;1)}$$と$${(2,\;4)}$$なので

\begin{tikzpicture}[samples=200,scale=1]
\begin{scope}\clip (-3,-1) rectangle (3,5);
\fill[gray!20!white] plot[domain=-1:2](\x,{pow(\x,2)});
\draw[thick] plot(\x,{pow(\x,2)});
\draw[thick] plot(\x,\x+2);
\end{scope}
\draw[->,>=stealth,semithick] (-3,0)--(3,0)node[right]{$x$};
\draw[->,>=stealth,semithick] (0,-1)--(0,5)node[left]{$y$};
\draw (0,0)node[below left]{O};
\end{tikzpicture}

とすれば

となります。

\fill[gray!20!white] plot[domain=-1:2](\x,{pow(\x,2)});

の部分が

点$${(x,\;x^2)}$$を$${-1 \leqq x \leqq 2}$$の範囲で繋ぎ,最初と最後の点(つまり$${(-1,\;1)}$$と$${(2,\;4)}$$)を結んでできる領域を,色 gray!20!white(グレイ20%,白80%で混ぜた色)で塗る

という意味になっています。

交点の座標を求めるのがメンドウな場合

例えば,放物線$${y=x^2}$$と直線$${y=-\dfrac{\,x\,}{2}+2}$$の場合,交点を求めるのがメンドウです。(もちろん,この場合なら手計算でも求められますが…)
このような場合,次のようにします。

\begin{tikzpicture}[samples=200,scale=1]
\begin{scope}\clip (-3,-1) rectangle (3,5);
\path[name path=C] plot(\x,{pow(\x,2)});
\path[name path=L] plot(\x,-\x/2+2);
\path[name intersections={of= C and L,by={A,B}}];
\tikzmath{
coordinate \c; \c{A} = (A); \c{B} = (B); \c{U} = (1,1);
\xA = \cx{A}/\cx{U}; \xB = \cx{B}/\cx{U};
}
\fill[gray!20!white] plot[domain=\xA:\xB](\x,{pow(\x,2)});
\draw[thick] plot(\x,{pow(\x,2)});
\draw[thick] plot(\x,-\x/2+2);
\end{scope}
\draw[->,>=stealth,semithick] (-3,0)--(3,0)node[right]{$x$};
\draw[->,>=stealth,semithick] (0,-1)--(0,5)node[left]{$y$};
\draw (0,0)node[below left]{O};
\end{tikzpicture}

こうすると,交点の座標を自分では計算していなくても

と,正しい図が得られます。

まず
\path[name path=C] plot(\x,{pow(\x,2)});
\path[name path=L] plot(\x,-\x/2+2);
\path[name intersections={of= C and L,by={A,B}}];
の部分で,放物線に C,直線に L という名前を付けておき,その C と L の交点を A,B としています

そして
\tikzmath{
coordinate \c; \c{A} = (A); \c{B} = (B); \c{U} = (1,1);
\xA = \cx{A}/\cx{U}; \xB = \cx{B}/\cx{U};
}
の部分で,点 A,B の$${x}$$成分を取り出し,それを座標に変換しています。
(\c{A} の段階では単位が pt になっていて,それを座標に変換するためにナンヤカンヤしています。)

とにかく,具体的な数値は不明でも,点 A の$${x}$$座標が \xA,点 B の$${x}$$座標が \xB,となっています。これを plot[domain=\xA:\xB] というように定義域の設定に使用しています。

これで領域を図示できますね♪

しれっと TeX 記法を利用してみましたが,いかがでしょう?

この記事が気に入ったらサポートをしてみませんか?