Area of intersection of two circles

The problem is to compute the area of the intersection of two circles of arbitrary radius.

In this post, the trivial cases (no intersection and one circle completely inside the other) are not discussed.

 

Let A be the center of the circle (x0,y0) of radius r0 and B be the center of the other circle (x1,y1) of radius r1.
We want to calculate the area of the green area in the figure 1.

fig1.png
Figure 1: Area to compute

Let’s add two points at the intersections between the two circles, C and D.
The area can therefore be decomposed in two sub-areas A1 and A2 being the left and the right parts of the intersection.
Area = A1 + A2

fig2.png
Figure 2: Sub-areas A1 and A2

The area of each sub-area can be calculated as the difference of the area of the pie and the triangle.
A1 = A_Pie(DAC) - A_{DAC}
A2 = A_Pie(CBD) - A_{CBD}

fig3.png
Figure 3: How to calculate one sub-area

First, A_{Pie}(DAC) and A_{Pie}(CBD).

The area of the pie is proportionnal to the area of the whole circle
and therefore with alpha the angle of the pie you have the following relation:
A_{Pie} * 2\pi = \alpha * A_{circle}
A_{Pie} = \alpha * A_{circle} / {2\pi}
A_{Pie} = \alpha * \pi r^2 / {2\pi}
A_{Pie} = \alpha * r^2 / 2
A_{Pie} = 0.5 * \alpha * r^2

A_{Pie}(DAC) = 0.5 * \widehat{DAC} * r_0^2
A_{Pie}(CBD) = 0.5 * \widehat{CBD} * r_1^2

We have to find the angles now.
\widehat{DAC} = 2 * \widehat{BAC} so we just have to find BAC.
We know all the lengths of the edges of the triangle ABC and therefore
we can calculate its angles with the cosine rule (https://en.wikipedia.org/wiki/Law_of_cosines).

r_0^2 = r_1^2 + AB^2 - 2*r_1*AB*cos(CBA)

The length AB can be calculated simply from the coordinates of A and B
AB = sqrt{(x_1-x_0)^2 + (y_1-y_0)^2}

cos(BAC) = {r_0^2 + AB^2 - r_1^2}/{2*r_0*AB}

\widehat{BAC} = acos({r_0^2 + AB^2 - r_1^2}/{2*r_0*AB})
Similarly,
\widehat{ABD} = acos({r_1^2 + AB^2 - r_0^2}/{2*r_1*AB})

Now we juste have to calculate the area of the triangles and we are done.
Since we already have the length of two sides of the triangle and the angle in-between,
we can use that
A_{DAC} = 0.5 * r_0^2 * sin(\widehat{DAC}) = 0.5 * r_0^2 * sin(\widehat{DAC})
Same for A_{CBD} = 0.5 * r_0^2 * sin(\widehat{CBD})

The demonstration is easy:
Area of a triangle is 0.5 * base * height
here base = 2*r_0*sin(BAC), height = r_0*cos(BAC)
A_{DAC} = 0.5 * 2*r_0*sin(BAC) * r_0*cos(BAC)
A_{DAC} = 0.5 * r_0^2 * 2*sin(BAC)*cos(BAC)
and 2 sin(a) cos(a) = sin(2a) so we finally get the expected result A_{DAC} = 0.5 * r_0^2 * sin(DAC)

fig4
Figure 4: Area of the triangle DAC

We finally have:
A = A1 + A2
A = A_{Pie}(DAC) - A_{DAC} + A_{Pie}(CBD) - A_{CBD}
A = 0.5 * \widehat{DAC} * r_0^2 - 0.5 * r_0^2 * sin(\widehat{DAC}) + 0.5 * \widehat{CBD} * r_1^2 - 0.5 * r_0^2 * sin(\widehat{CBD})

with
\widehat{DAC} = 2 * acos({r_0^2 + AB^2 - r_1^2}/{2*r_0*AB})
\widehat{CBD} = 2 * acos({r_1^2 + AB^2 - r_0^2}/{2*r_1*AB})

Links:
https://stackoverflow.com/questions/4247889/area-of-intersection-between-two-circles
http://mathforum.org/library/drmath/view/54785.html
http://mathworld.wolfram.com/Circle-CircleIntersection.html
This article is mostly inspeared of the explanation on mathforum.

The figures were done with https://www.geogebra.org

Advertisements