2 円の重なりの面積の求め方

2 つの円が重なった部分の面積を求めます。重なりは 2 つの弓形を貼り合わせた形なので、それぞれの扇形から三角形を引いて足し合わせます。共通弦の長さもあわせて出します。

2 つの円が部分的に重なると、レンズのような形ができます。この面積は、それぞれの円から切り取られた弓形を 2 つ貼り合わせたものです。

S=r12θ1+r22θ2−12(−d+r1+r2)(d+r1−r2)(d−r1+r2)(d+r1+r2)S = r_1^2 \theta_1 + r_2^2 \theta_2 - \dfrac{1}{2}\sqrt{(-d + r_1 + r_2)(d + r_1 - r_2)(d - r_1 + r_2)(d + r_1 + r_2)}
θ1=arccos⁡d2+r12−r222dr1θ2=arccos⁡d2+r22−r122dr2\theta_1 = \arccos\dfrac{d^2 + r_1^2 - r_2^2}{2 d r_1} \qquad \theta_2 = \arccos\dfrac{d^2 + r_2^2 - r_1^2}{2 d r_2}

角は余弦定理から出ます。2 つの中心と、円が交わる点の 1 つを結ぶと三角形ができ、その 3 辺は r1r_1、r2r_2、dd です。この三角形の角がそのまま θ1\theta_1、θ2\theta_2 になります。

最後に引いている平方根は、この三角形の面積の 4 倍です。ヘロンの公式を展開した形になっています。扇形を 2 つ足すと三角形の部分を二重に数えてしまうので、そのぶんを引いています。

例

既定の入力で見てみます。半径 5 と 4 の円が、中心を 6 だけ離して置かれています。

θ1\theta_1 は arccos⁡(45÷60)\arccos(45 \div 60) でおよそ 0.7227、θ2\theta_2 は arccos⁡(27÷48)\arccos(27 \div 48) でおよそ 0.9728 です(単位はラジアン)。

25×0.722725 \times 0.7227 がおよそ 18.0683、16×0.972816 \times 0.9728 がおよそ 15.5647、平方根の項の半分がおよそ 19.8431 です。足し引きして、重なりの面積はおよそ 13.7995 になります。

共通弦の長さはおよそ 6.6144 です。小さいほうの円の面積はおよそ 50.2655 ですから、その 27.45% ほどが重なっていることになります。

3 つの場合

中心が離れすぎていると、2 円は重なりません。dd が r1+r2r_1 + r_2 以上のときで、面積は 0 になります。ちょうど等しいときは外側で接するだけなので、やはり 0 です。

逆に中心が近すぎると、小さいほうの円がすっぽり入ります。dd が半径の差以下のときで、重なりは小さいほうの円そのものになります。このとき交わる点はないので、共通弦は 0 と返します。

その中間でだけ、上の式を使います。電波やセンサーの届く範囲がどれだけ重なっているか、といった場面で使う計算です。