あかり描像のブログ

思ったことや学習記録を適当に書いていきます。お気軽にコメントください

【TikZ】TikZで円弧を描く

TikZ で円弧を描く方法を 2 通り紹介します

TikZとは

皆さんはPCで数学の図を描くときどんなソフトを使っているでしょうか。
Web上の draw.io を使っている方もいれば、PowerPoint を使っている人もいるでしょう。
Adobe社の Illustrator を使っている方も多いと思います。
(他に何か便利な描画ソフトがあれば教えてください...)

ところが、 draw.io や PowerPoint はアカウントも必要なく視覚的に描画できるなど非常に使いやすいのですが、感覚で図を描くことになるので、正確な図を作成しようとなるとなかなかの困難を極めます。

Illustrator も出力が美しくていいですが、何より有料であるため、貧乏な学生にはつらいものがあります。


TikZ/PGF(以下単に TikZ と書きます) は  \LaTeX で図を描画できるパッケージで、無料で利用できるうえ非常に強力なツールとなっています。
TikZ - TeX Wiki に TikZ の大まかな使い方が載っています。

また、TikZ には pgfmanual.pdf に1,000ページを超える英語のマニュアルがあるので、これを理解すれば(理論上)どんな図も描くことができるようになるでしょう。

http://www.texample.net/には TikZ を用いて描かれた図の具体例が紹介されています。
たとえば…

TeXample.net に掲載されているTikZの図の例

すごいですね。私もこんな図を自力で描けるようになりたいものです。

今回作ったもの

今後、私が実際に作った図とコードを最初に一緒に載せ、その後補足説明を述べていく形式をとることにします。

私自身手探り状態なので、作成したコードが望ましいものであるかどうかは分かりません。あらかじめご了承願います。

以下は pLaTeXコンパイルできることを確認しております。

\documentclass[dvipdfmx]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[scale=2]
  % 軸
  \draw[thick, -stealth] (-1.2, 0)--(1.2, 0) node[right] {$x$};
  \draw[thick, -stealth] (0, -0.3)--(0, 1.3) node[above] {$y$};

  % 原点
  \node[below left] (0, 0) {O};

  % 切片
  \draw (1, 0) node[below] {$a$};
  \draw (-1, 0) node[below] {$-a$};
  \draw (0, 1) node[above left] {$a$};

  % 補助円
  \draw[thin] ([shift={(0,0)}]0:1) arc [radius=1, start angle = 0, end angle=180];

  % 弧
  \draw[very thick, domain=-2/3:1/2, samples=500] plot(\x, {sqrt(1-(\x)^2)});

  % 点
  \fill (-2/3, {sqrt(1-4/9)}) circle (1pt);
  \fill (1/2, {sqrt(1-1/4)}) circle (1pt);

  % 点のx座標
  \draw[dashed] (-2/3, {sqrt(1-4/9)})--(-2/3, 0) node[below] {$\alpha$};
  \draw[dashed] (1/2, {sqrt(1-1/4)})--(1/2, 0) node[below] {$\beta$};

\end{tikzpicture}
\end{document}



実行結果


 \displaystyle \int_\alpha^\beta \sqrt{a^2-x^2}\, dx が半円の面積の一部に対応しているのと同様に、  \displaystyle \int_\alpha^\beta \frac{a}{\sqrt{a^2 - x^2}}\, dx は半円の弧の長さの一部に対応しているよね、という説明をするために作成した図です。

詳細

円弧を描く2通りの方法

今回作成したコードでは、2通りの方法で円弧を描いています。

[方法1] 半径および始点・終点の角度を指定する
  % 補助円
  \draw[thin] ([shift={(0,0)}]0:1) arc [radius=1, start angle = 0, end angle=180];

図で細い半円を描いているのはこの部分ですね。
中心  (0, 0)、半径  1 の円を、偏角  0^\circ から  180^\circ まで描け、という意味になっています。

以下のサイトが参考になると思います。
https://tex.stackovernet.com/ja/q/84787

もう少し応用的な描画について、このサイトによれば、中心  (3, 2)、半径  3 の円を、偏角  50^\circ から  200^\circ まで描きたいときは次のように書けばよいそうです。

  \draw ([shift={(3,2)}]50:3) arc[radius=3, start angle=50, end angle= 200];

実行結果。分かりやすくするために  (0, 0) から  (6, 6) までます目を敷き、円弧を赤で描いた。ちゃんと中心  (3, 2)、半径  3 の円を、偏角  50^\circ から  200^\circ まで描いた図になっている

([shift={(3,2)}]50:3)の最初の(3,2)は中心のデカルト座標  (x, y)(50:3)は始点の極座標  (\theta, r) に対応しています。
 \theta は度数法。  r \theta がよく見かける形と逆になっているけどそういう仕様みたいです)。


[方法2] √(1-x²) をプロットする
  % 弧
  \draw[very thick, domain=-2/3:1/2, samples=500] plot(\x, {sqrt(1-(\x)^2)});

太い円弧を描いているのはこの部分です。

 y=\sqrt{1-x^2} は半径  1 の円の上半分なので、これをプロットしてやろうということです。
\draw plot(\x, {\x の式}); で {\x の式} の部分をプロットすることができます。
これは半円に関わらず {\xの式} を書き換えることで大抵の関数を描くことができるコマンドなので非常に便利です。
今回は  y=\sqrt{1-x^2} を描きたいので plot(\x, {sqrt(1-(\x)^2)}) と書きます。

TikZ では平方根sqrt(..) で計算できるのが強いですね。


\draw 直後の [..] はプロットのオプションを書くところです。

domain=-2/3:1/2は、 -\frac{2}{3} \leq x \leq \frac{1}{2} の領域だけプロットせよ、ということを意味します。

samples=500 はサンプル数で、指定しないとグラフがカクカクになってしまうので書き加えました。
サンプル数は多ければいいので必ずしも500でなくてもいいです(たとえば200とか)。