3次元において半径が \(r\) の球の面積は \(4\pi r^2\) であることは誰でもご存じと思います。それでは、球面三角形の面積、キャップ1 (spherical cap) の面積、あるいは、キャップとキャップが重なった部分の面積の求め方はご存じでしょうか?ここではこのような球の面積に関する少し高度な話題を取り上げます。
球面多角形、球面三角形
球をその中心を通る平面で切断したときの断面に現れる円を大円 (great circle)とよびます。複数の大円によって囲まれる球面上の領域を球面多角形 (spherical polygon) と呼び、大円同士の交点が頂点、大円上の円弧が辺に対応します。
図2のような球面を考えます。青色で示した領域は、3つの大円に囲まれた球面上の図形です。三つの頂点 (大円の交点) を \(A, B, C\)、各辺の長さを \(a, b, c\)、各内角を \(\alpha, \beta, \gamma\) とします。なお、辺の長さ \(a, b, c\) は (頂点間の距離ではなく) 球面上の円弧に沿った長さです。したがって、 \(a, b, c\) は (球の半径が1であれば) 2つの頂点間の角度に相当します。このような三角形を、球面三角形 (spherical triangle) といい、この三角形に関する種々の方法論を球面三角法 (spherical trigonometry) といいます。球の半径を 1 として以下のような定理があります。比較のため平面三角法と並べてお示しします。

| 定理 | 球面 (球の半径は1) | 平面 |
|---|---|---|
| 余弦定理 | \(\cos a = \cos b \cos c + \sin b \sin c \cos \alpha\) \(\cos b = \cos c \cos a + \sin c \sin a \cos \beta\) \(\cos c = \cos a \cos b + \sin a \sin b \cos \gamma\) | \(a^2=b^2+c^2-2bc\cos \alpha\) \(b^2=c^2+a^2-2bc\cos \beta\) \(c^2=a^2+b^2-2bc\cos \gamma\) |
| 正弦定理 | \(\displaystyle \frac{\sin a}{\sin \alpha} = \frac{\sin b}{\sin \beta}= \frac{\sin c}{\sin \gamma}\) | \(\displaystyle \frac{a}{\sin \alpha}=\frac{b}{\sin \beta}=\frac{c}{\sin \gamma}\) |
| 面積 | \(\displaystyle 2 \sin^{-1} \left[ \frac{\sqrt{ \sin s \sin (s-a)\sin (s-b)\sin (s-c)} }{2 \cos(a/2)\cos(b/2)\cos(c/2)} \right]\) ただし\( \ 2s = a+b+c\) あるいは \(\alpha+\beta+\gamma-\pi\) | \(\sqrt{s (s-a)(s-b)(s-c)}\) ただし \(2s = a+b+c \) 単位円に内接する場合は \(2 \sin\alpha \sin\beta \sin\gamma\) |
平面三角形と異なり \(a,b,c\) が角度の性質を持つため、ぱっと見はだいぶん異なりますね。ただし \(a,b,c\) が小さくなれば (球面三角形が小さくなれば)、例えば \( \sin a\rightarrow a,\ \cos a \rightarrow 1-a^2/2\) となります3から、平面三角法の定理に近づくことがわかります。最後に、\(a,b,c,\alpha, \beta, \gamma\)には以下のような関係もあります。\(2s = a+b+c\)、\(2S = \alpha+\beta+\gamma\)と定義して、
$$ \begin{array}{l}
\sin^2 (\alpha/2) = [\sin(s-b)\sin(s-c)] / [\sin b \sin c] \\
\cos^2 (\alpha/2) = [\sin s \sin(s-a)] / [\sin b \sin c]\\
\sin^2 (a/2) = -[\cos S \cos(S-\alpha)] / [\sin \beta \sin \gamma]\\
\cos^2 (a/2) = [\cos(S-\beta)\cos(S-\gamma)]/[\sin \beta \sin \gamma]\end{array}$$
球面超過=面積
球面三角形の内角の和 (\(\alpha+\beta+\gamma\) ) は必ず \(\pi\) より大きくなります。どれぐらい \(\pi\) を超過したかを示す量を球面超過 (spherical excess) と呼び、$$E= \alpha+\beta+\gamma-\pi$$と定義します。単位球 (半径1の球) の場合 \(E\) は球面三角形の面積に等しいという興味深い性質があります。これは以下のように簡単に説明できます。
まず、2つの大円で囲まれる領域は「頂点が2つの球面多角形」であり、これをルーネ (lune, 二角形)4 と呼ぶことにします。単位球の場合、頂点角 \(\theta\) のルーネの面積は \(2\theta\) となります。
さて球面三角形を定義する3つの大円を次の図のように \(G_1, G_2,G_3\) とします。また大円によって分かたれる各領域の面積を \(A_t, A_1, A_2, A_3\) のように定義します。もちろん求めたいのは \(A_t\) の部分です。\(G_2\)と\(G_3\)に囲まれかつ \(A_t\) を含むルーネ\(L_1\) の面積は $$2\alpha = A_t+A_1$$ です。残り二つのルーネも同様に \(L_2, L_3\)と定義すればそれらの面積はそれぞれ $$2\beta = A_t+A_2,\quad 2\gamma=A_t+A_3$$ となります。これらをまとめると、$$3A_t+A_t+A_1+A_2+A_3=2 (\alpha+\beta+\gamma)$$ が得られます。最後に \(A_t+A_1+A_2+A_3\) が半球の面積 \(2\pi\) であることを利用して以下の式が得られます。$$A_t = \alpha+\beta+\gamma-\pi=E$$

キャップの面積
キャップとは、球がある平面で切断されたときにできるお椀のような形状をした立体のことです。次の図のように、半径 \(r\) の球が、原点から \(r-h\) だけ離れた平面によって切られ、底面の半径が\(a\)、 高さが \(h\) 、開き角が \(\Theta\) のキャップ(青色)に分かたれたとします。キャップの中心が北極点\(N\)に一致していると考えて話を進めます。


このキャップの表面積\(A\)は、キャップ中心\(N\)との成す角度 \(\theta\) で積分すれば求まります。すなわち$$A=\int_0^\Theta {2 \pi r^2 \sin\theta\ d\theta} = 2\pi r^2 (1-\cos\Theta) $$となります5。\(r (1-\cos\Theta)=h\) なので \(A=2\pi r h\) と書くこともできますし、\(r^2=a^2+(r-h)^2 \leftrightarrow 2rh=a^2+h^2\) なので \(A=\pi (a^2+h^2)\) と書くこともできます。
キャップとキャップの重なり面積
今度は次のような図6の状況を考えます。青のキャップと緑のキャップがあって、その重なり部分である黄色の面積を求めたいという問題です。青と緑のキャップの開き角がそれぞれ \(\Theta_1、\Theta_2\) でありキャップの中心がなす角は \(\alpha\) です。青のキャップの中心は北極点 \(N\) に一致し、緑のキャップの中心は経度ゼロの円上にあるとします。なお、以降は球の半径 \(r\) は1であるとします (そうでない場合は全ての答えに \(r^2\) を乗じるだけです)。


解き方その1: 積分の問題として
注目領域を拡大し、緯線 (\(\theta\)に相当7) と経線(\(\varphi\)に相当)を書き込んだ図を示します。球面上の点 \(P\) は$$
P(\theta, \varphi)= (\sin\theta\cos\varphi, \sin\theta\sin\varphi, \cos\theta)$$と表現できます。青キャップの中心は\(C_1=(0,0,1)\)であり、緑キャップの中心は\(C_2=(\sin\alpha,0,\cos\alpha)\)です。点\(P\)が青のキャップに含まれる条件は\(\theta \le \Theta_1\)であり、緑のキャップに含まれる条件は$$
P\cdot C_2 = \sin\theta\cos\varphi\sin\alpha + \cos\theta\cos\alpha \ge \cos\Theta_2 $$となります。\(\varphi\)に注目して書き直すと$$
\cos\varphi \ge \frac{\cos\Theta_2-\cos\theta \cos\alpha}{\sin\theta \sin\alpha}$$となります。右辺の式は何度も出てくるので$$k(\theta) = \frac{\cos\Theta_2-\cos\theta \cos\alpha}{\sin\theta \sin\alpha}$$と定義しておきます。

さて黄色い領域が現れる \(\theta\) の範囲は、図から明らかなように \(\alpha-\Theta_2 \sim \Theta_1\) です8。この \(\theta\) の範囲内であれば \(\cos\varphi \ge k(\theta)\) を満たすような \(\varphi\) が存在します。\(\theta\)を固定したとき、 \(\varphi\) の取りうる範囲 (黄色領域の経度の範囲) は $$ -\cos^{-1}\{k(\theta)\} \sim +\cos^{-1}\{k(\theta)\} $$ と表現できます。さあこれで問題はほぼ解決しました。最後に、緯線に沿った長さが \(\sin\theta\) に比例することに注意して、以下の積分$$
\int_{\alpha-\Theta_2}^{\Theta_1} 2 \cos^{-1}\{k(\theta)\} \sin\theta\ d\theta = \int_{\alpha-\Theta_2}^{\Theta_1} 2 \cos^{-1}\left[\frac{\cos\Theta_2-\cos\theta \cos\alpha}{\sin\theta \sin\alpha}\right] \sin\theta\ d\theta
$$ を解くことで、黄色領域の面積が求まります。残念ながら\(\cos^{-1}\{k(\theta)\}\)に簡単な原始関数はないので、これ以上の簡単な展開はできません。
解き方その2: 球面三角形の問題として
もう一つの解き方は、球面三角形の問題に帰着する方法です。図のように、青と緑のキャップの中心を\(C_1, C_2\)、交点を \(P, P’\) とします。球面三角形 \(C_1 C_2 P\) と \(C_1 C_2 P’\) は合同なので、前者だけを考えます。 \(C_1 C_2 P\) の各辺の(円弧の)長さは \(\Theta_1, \Theta_2, \alpha\) であり、内角は \(\beta_1, \beta_2, \beta_3\) であるとします。また 辺 \(C_1 C_2\)と黄色境界線が交わる点を \(Q_1, Q_2\) とします。このように考えると、黄色領域の面積は、「 扇領域 \(C_1 PQ_1\) と \(C_2 PQ_2\) の面積の和から、球面三角形 \(C_1 C_2 P\) の面積を引き、最後に2倍」 することで求まることがお分かりいただけると思います。
扇領域 \(C_1 PQ_1\) と \(C_2 PQ_2\) の面積 \(A_1, A_2\) および球面三角形\(C_1 C_2 P\) の面積 \(A_t\) は はそれぞれ$$
A_1=\beta_1(1-\cos\Theta_1)\\
A_2= \beta_2(1-\cos\Theta_2)\\
A_t=\beta_1+\beta_2+\beta_3-\pi$$と簡単に表現できます。

また、すでにこのページの上の方で示した通り、 \(\beta_1,\beta_2, \beta_3\) は球面余弦定理によって$$
\cos\beta_1 = \frac{\cos\Theta_2 -\cos \Theta_1 \cos\alpha}{\sin\Theta_1 \sin\alpha} \quad \leftrightarrow \quad
\beta_1 = \cos^{-1}\left[ \frac{\cos\Theta_2 -\cos \Theta_1 \cos\alpha}{\sin\Theta_1 \sin\alpha} \right]\\
\cos\beta_2 = \frac{\cos\Theta_1 -\cos \Theta_2 \cos\alpha}{\sin\Theta_2 \sin\alpha} \quad \leftrightarrow \quad \beta_2 = \cos^{-1} \left[ \frac{\cos\Theta_1 -\cos \Theta_2 \cos\alpha}{\sin\Theta_2 \sin\alpha} \right]\\
\cos\beta_3 = \frac{\cos\alpha -\cos \Theta_1 \cos\Theta_2}{\sin\Theta_1 \sin\Theta_2} \quad \leftrightarrow \quad
\beta_3 =\cos^{-1} \left[ \frac{\cos\alpha -\cos \Theta_1 \cos\Theta_2}{\sin\Theta_1 \sin\Theta_2}\right]$$と求めることができます。さらに \(\cos^{-1}(-\omega) = \pi-\cos^{-1}(\omega)\) という関係を使えば、$$
\pi-\beta_3 =\cos^{-1} \left[ \frac{\cos \Theta_1 \cos\Theta_2 -\cos\alpha}{\sin\Theta_1 \sin\Theta_2}\right]
$$となりますので、もう少しだけすっきりします。すなわち、黄色部分の面積 \(S\) は、$$\begin{array}{l}
{\Large{\frac{S}{2}}} = A_1+A_2-A_t = (\pi-\beta_3 ) -\cos\Theta_1 \beta_1 -\cos\Theta_2 \beta_2 \\
\quad = \cos^{-1}\left[\large{ \frac{\cos \Theta_1 \cos\Theta_2 -\cos\alpha}{\sin\Theta_1 \sin\Theta_2}}\right]
-\cos\Theta_1 \cos^{-1}\left[\large{ \frac{\cos\Theta_2 -\cos \Theta_1 \cos\alpha}{\sin\Theta_1 \sin\alpha}} \right]
-\cos\Theta_2 \cos^{-1} \left[\large{ \frac{\cos\Theta_1 -\cos\Theta_2 \cos\alpha}{\sin\Theta_2 \sin\alpha}} \right]
\end{array}$$となります。超複雑ではありますが積分形式はなくなり、Excelなどでも計算できる形になりました。
特別なケース1: 開き角が同一
上で求めた式が、特別なケースでどれくらい簡単になるか見てみましょう。まず\(\Theta=\Theta_1=\Theta_2\)の場合は、$$\beta_1=\beta_2 = \cos^{-1}\left[ \frac{1 -\cos\alpha}{\tan\Theta \sin\alpha} \right]\\
\pi-\beta_3 =\cos^{-1}\left[ \frac{\cos^2 \Theta -\cos\alpha}{\sin^2\Theta}\right]$$この時二つのキャップの重なり面積 \(S\) は、$$
S= 2\cos^{-1} \left[ \frac{\cos^2 \Theta -\cos\alpha}{\sin^2\Theta}\right]
-4\cos\Theta \cos^{-1}\left[ \frac{1 -\cos\alpha}{\tan\Theta \sin\alpha} \right]
$$
特別なケース2: 二つのキャップが直交
\(\alpha\)に\(\pi/2\)を代入すれば、$$
\beta_1 = \cos^{-1}\left[ \frac{\cos\Theta_2 }{\sin\Theta_1} \right], \quad
\beta_2 = \cos^{-1} \left[ \frac{\cos\Theta_1}{\sin\Theta_2} \right]\\
\pi-\beta_3 =\cos^{-1} \left[\frac{ 1}{\tan\Theta_1 \tan\Theta_2}\right]=\cos^{-1}(\cot \Theta_1 \cot \Theta_2)
$$この時二つのキャップの重なり面積 \(S\) は、$$
S=2 \cos^{-1} (\cot \Theta_1 \cot \Theta_2) -2 \cos\Theta_1 \cos^{-1}\left[ \frac{\cos\Theta_2 }{\sin\Theta_1} \right]
-2 \cos\Theta_2 \cos^{-1} \left[ \frac{\cos\Theta_1}{\sin\Theta_2} \right]
$$
特別なケース3: 二つのキャップが直交し開き角が同一
ここまで限定するとかなり簡単になります。\(\Theta=\Theta_1=\Theta_2\) かつ \(\alpha=\pi/2\)として$$
\beta_1 =\beta_2 =\cos^{-1}\left[ \frac{1}{\tan\Theta} \right] = \cos^{-1}(\cot \Theta) \\
\pi-\beta_3 =\cos^{-1} \left[\frac{1}{\tan^2\Theta}\right]= \cos^{-1} (\cot^2 \Theta)
$$この時二つのキャップの重なり面積 \(S\) は、$$
S=2\cos^{-1}( \cot^2 \Theta) -4\cos\Theta \cos^{-1}(\cot \Theta)$$
特別なケース4: 二つのキャップが120°で交わり開き角が同一
キャップの重なり面積 \(S\) は、$$
S=2\cos^{-1} \left[ \frac{1 + 2 \cos^2 \Theta}{2\sin^2\Theta}\right] -4\cos\Theta \cos^{-1}(\sqrt{3}\cot\Theta)
$$
特別なケース5: 二つのキャップが60°で交わり開き角が同一
キャップの重なり面積 \(S\) は、$$
S= 2\cos^{-1}\left[ \frac{-1 + 2 \cos^2 \Theta}{2\sin^2\Theta}\right] -4\cos\Theta \cos^{-1}(\cot\Theta/\sqrt{3})
$$
特別なケース6: 二つのキャップが45°で交わり開き角が同一
キャップの重なり面積 \(S\) は、$$
S=-2\cos^{-1} \left[ \frac{-1 +\sqrt{2} \cos^2 \Theta}{\sqrt{2}\sin^2\Theta}\right] -4\cos\Theta \cos^{-1}( [\sqrt{2}-1] \cot\Theta)
$$
- 球冠ということもあります。 ↩︎
- 以下Mathematicaコード
P1 = Normalize[{2, 0, 1}]; P2 = Normalize[{0, 0, 1}]; P3 =Normalize[{1, -2.5, 1}];
gcNormal[p_, q_] := Normalize[Cross[p, q]];
n12 = gcNormal[P1, P2]; s12 = Sign[n12 . P3]; n23 =gcNormal[P2, P3]; s23 = Sign[n23 . P1]; n31 = gcNormal[P3, P1]; s31 =
Sign[n31 . P2];
eps = 10^-10;
insideTri[p_] :=And[s12 Dot[n12, p] >= -eps, s23 Dot[n23, p] >= -eps,s31 Dot[n31, p] >= -eps];
sphere =ParametricPlot3D[ {Sin[th] Cos[ph], Sin[th] Sin[ph], Cos[th]}, {th,0, Pi}, {ph, 0, 2 Pi}, Mesh -> None,ColorFunctionScaling -> False, ColorFunction -> Function[{x, y, z, th, ph}, If[insideTri[{x, y, z}], Blue, Red]], PlotPoints -> {800, 800}, MaxRecursion -> 1, PerformanceGoal -> “Quality”, Lighting -> “Neutral”, PlotRange -> All];
greatCirclePlot[p_, q_] := Module[{n, e1, e2}, n = Cross[p, q];
If[Norm[n] < 10^-12, Return[Graphics3D[{}]]]; n = Normalize[n]; e1 = Normalize[p]; e2 = Normalize[Cross[n, e1]]; ParametricPlot3D[r (Cos[t] e1 + Sin[t] e2), {t, 0, 2 Pi}, PlotStyle -> {Black, Thin}, PlotPoints -> 800, Mesh -> None]];
gc12 = greatCirclePlot[P1, P2]; gc23 = greatCirclePlot[P2, P3]; gc31 = greatCirclePlot[P3, P1];
Show[sphere, gc12, gc23, gc31, Boxed -> True, Axes -> False, ImageSize -> 400] ↩︎ - テイラー展開で2次の項まで考慮。 ↩︎
- ラテン語で月を意味する luna に由来します。 ↩︎
- \(\phi \sim \phi+d\phi\) の環上のバンドは、長さが \(2\pi r \sin\phi\) で幅が\(r d\phi\) なので。 ↩︎
- 以下Mathematicaコード
r = 1.2;
sphere =ParametricPlot3D[r {Sin[th] Cos[ph], Sin[th] Sin[ph], Cos[th]}, {th, 0, Pi}, {ph, 0,2 Pi}, Mesh -> None,
ColorFunction ->Function[{x, y, z, th, ph},Which[z < 1 && (x + z)/Sqrt[2 (x^2 + y^2 + z^2)] < 0.9, Red, z > 1 && (x + z)/Sqrt[2 (x^2 + y^2 + z^2)] > 0.9, Yellow,z > 1 , Blue, True, Green]],ColorFunctionScaling -> False, PlotPoints -> {800, 800},MaxRecursion -> 2, PerformanceGoal -> “Quality”,PlotRange -> All];
Show[sphere, PlotRange -> All, Boxed -> True, Axes -> False,ImageSize -> 400] ↩︎ - 地球の緯度は赤道面からの角度で表現しますが、球面極座標では通常北極点 (Z軸方向) からの角度で表現します。緯度との混同を避けるため、「余緯度」 (colattitude)と表現することもあります。 ↩︎
- ここでは、\(0<\alpha-\Theta_2 < \Theta_1\) という状況に限定します。緑キャップが青キャップの中心を含む、あるいは青キャップが緑キャップ全体を包む、というケースは考えません。 ↩︎