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

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

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

S=r12θ1+r22θ212(d+r1+r2)(d+r1r2)(dr1+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=arccosd2+r12r222dr1θ2=arccosd2+r22r122dr2\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_1r2r_2dd です。この三角形の角がそのまま θ1\theta_1θ2\theta_2 になります。

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

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

θ1\theta_1arccos(45÷60)\arccos(45 \div 60) でおよそ 0.7227、θ2\theta_2arccos(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 円は重なりません。ddr1+r2r_1 + r_2 以上のときで、面積は 0 になります。ちょうど等しいときは外側で接するだけなので、やはり 0 です。

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

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