You are on page 1of 12

The Area of Intersecting Ellipses

David Eberly
Geometric Tools, LLC
http://www.geometrictools.com/
Copyright c 1998-2008. All Rights Reserved.
Created: September 4, 2008
Last Modied: September 5, 2008
Contents
1 Introduction 2
2 Area of an Ellipse 2
3 Area of an Elliptical Sector 3
4 Area Bounded by a Line Segment and an Elliptical Arc 5
5 Intersection Points of Ellipses 6
6 Area of Intersecting Ellipses 8
6.1 0 Intersection Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2 1 Intersection Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.3 2 Intersection Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.4 3 Intersection Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.5 4 Intersection Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1
1 Introduction
This document describes an algorithm for computing the area of intersection of two ellipses. The formulas
are in closed form, thus providing the exact area in terms of real-valued arithmetic. Naturally, the computer
evaluation of the trigonometric functions in the formulas has some numerical round-o errors, but the
formulas allow you to avoid (1) approximating the ellipses by convex polygons, (2) using the intersection of
convex polygons as an approximation to the intersection of ellipses, and (3) using the area of intersection of
convex polygons as an approximation to the area of intersection of ellipses.
The algorithm has two main aspects: Computing the points of intersection of the ellipses and computing the
area bounded by a line and an elliptical arc.
2 Area of an Ellipse
An axis-aligned ellipse centered at the origin is
_
x
a
_
2
+
_
y
b
_
2
= 1 (1)
where I assume that a > b, in which case the major axis is along the x-axis. Figure 2.1 shows such an ellipse.
Figure 2.1 An axis-aligned ellipse centered at the origin with a > b.
The area bounded by the ellipse is ab. Using the methods of calculus, the area A is four times that of the
area in the rst quadrant,
A = 4
_
a
0
y dx = 4
_
a
0
b
_
1 (x/a)
2
dx (2)
2
The integral may be computed using the change of variables x = a cos for 0 /2. The dierential is
dx = a sin d and the area is
A = 4
_
a
0
b
_
1 (x/a)
2
dx
= 4b
_
0
/2
sin(a sin d)
= 4ab
_
/2
0
sin
2
d
= 2ab
_
/2
0
(1 cos(2)) d
= 2ab
_

1
2
sin(2)
_

/2
0
= 2ab
__

2

1
2
sin()
_

_
0
1
2
sin(0)
_
= ab
(3)
3 Area of an Elliptical Sector
An elliptical arc is a portion of the ellipse bounded by two points on the ellipse. The arc is delimited by
angles
0
and
1
, both in [, ]. If the arc does not cross the negative y-axis, we may choose
0
<
1
. If
the arc does cross the negative y-axis, for the purpose of numerical computation we may consider it as an
arc from
0
to
1
+ 2. This convention supports an integration formula involving branches of the inverse
tangent function, as we will see later. An elliptical sector is the region bounded by an elliptical arc and the
line segments containing the origin and the endpoints of the arc. Figure 3.1 shows an elliptical arc and the
corresponding elliptical sector.
Figure 3.1 An elliptical arc and its corresponding elliptical sector.
The polar-coordinate representation of the arc is obtained by substituting x = r cos and y = r sin into
Equation (1) and solving for r
2
,
r
2
=
a
2
b
2
b
2
cos
2
+ a
2
sin
2

(4)
The area of the sector is
A(
0
,
1
) =
_
1
0
1
2
r
2
d =
a
2
b
2
2
_
1
0
d
b
2
cos
2
+ a
2
sin
2

(5)
3
The following formula involves an integral whose value is found in standard books containing tables of
integrals; of course, it may also be derived from basic principles of calculus,
A(
0
,
1
) =
a
2
b
2
2
_
1
0
d
b
2
cos
2
+a
2
sin
2

=
ab
2
tan
1
_
a
b
tan()
_

1
0
=
ab
2
_
tan
1
_
a
b
tan(
1
)
_
tan
1
_
a
b
tan(
0
)
_
(6)
where tan
1
() is the branch of the inverse tangent function that corresponds to the angle at which tan()
is evaluated when substituting in the limits of integration. Figure 3.2 shows the graphs of three branches of
the inverse tangent function.
Figure 3.2 The graphs of three branches of the inverse tangent function.
The principal branch is labeled tan
1
0
(z) in the gure; its range is (/2, /2). The other branches are
dened by tan
1
k
(z) = tan
1
0
(z) + k for integrer-valued k = 0.
For example, consider the entire ellipse when
0
= and
1
= . The area is
A(, ) =
ab
2
_
tan
1
1
_
a
b
tan()
_
tan
1
1
_
a
b
tan()
_
=
ab
2
_
tan
1
1
(0) tan
1
1
(0)

=
ab
2
[() ()]
= ab
(7)
4
As another example, consider the half ellipse in the rst and fourth quadrants when
0
= /2 and
1
= /2.
The tangent function is undened at /2, so the integral is computed in the limiting sense,
A(/2, /2) = lim
0
+ A(/2 + , /2 )
=
ab
2
lim
0
+
_
tan
1
0
_
a
b
tan(/2 )
_
tan
1
0
_
a
b
tan(/2 + )
_
=
ab
2
_
tan
1
0
(+) tan
1
0
()

=
ab
2
[(/2) (/2)]
=
1
2
ab
(8)
The plus-sign superscript on 0 in the limit notation indicates that decreases to zero through positive values.
The area is half that of the entire ellipse, as expected.
4 Area Bounded by a Line Segment and an Elliptical Arc
Figure 4.1 shows the region bounded by an elliptical arc and the line segment connecting the arcs endpoints.
Figure 4.1 The region bounded by an elliptical arc and the line segment connecting the arcs
endpoints.
The area of this region is the area of the elliptical sector minus the area of the triangle whose vertices are
the origin, (0, 0), and the arc endpoints (x
0
, y
0
) = (a cos
0
, b sin
0
) and (x
1
, y
1
) = (a cos
1
, b sin
1
). The
triangle area is
1
2
|x
1
y
0
x
0
y
1
| =
ab
2
| cos
1
sin
0
cos
0
sin
1
| =
ab
2
| sin(
1

0
)| (9)
If (
0
,
1
) denotes the area of the aforementioned region, then
(
0
,
1
) = A(
0
,
1
)
ab
2
| sin(
1

0
)|
=
ab
2
_
tan
1
_
a
b
tan(
1
)
_
tan
1
_
a
b
tan(
0
)
_
| sin(
1

0
)|

(10)
5
where A(
0
,
1
) is the area of the sector as dened in Equation (6) and the other term on the right-hand
side is the area of the triangle as dened in Equation (9).
The region of interest could be that bounded by the line segment and the elliptical arc that is spanned
counterclockwise from
1
to
0
+ 2. Figure 4.2 illustrates.
Figure 4.2 The other region bounded by an elliptical arc and the line segment connecting the arcs
endpoints.
The area of this region is
(
1
,
0
+ 2) = ab (
0
,
1
) (11)
The bounded region has the area of the ellipse minus the area of the smaller region bounded by the line
segment and elliptical arc. In Equation (10), the origin is outside the bounded region. In Equation (11), the
origin is inside the bounded region.
5 Intersection Points of Ellipses
The ellipses may be written as quadratic forms,
(PC
i
)
T
R
T
i
D
i
R
i
(PC
i
) = 1, i = 0, 1 (12)
The center of ellipse i is C
i
, a 2 1 point. The orientation is R
i
= [U
i0
U
i1
], a 2 2 rotation matrix whose
rst column U
i0
is the 2 1 direction of the major axis and whose second column U
i1
is the 2 1 direction
of the minor axis. The 22 matrix D
i
= Diag(1/a
2
i
, 1/b
2
i
) is a diagonal matrix where a
i
is the distance along
the major axis from the center to the ellipse and b
i
is the distance along the minor axis from the center to
the ellipse. The 2 1 point P is any point on the ellipse.
Ignoring the i subscript for the sake of clarity, an ellipse (PC)
T
R
T
DR(PC) = 1 is parameterized by
P() = C+ (a cos )U
0
+ (b sin)U
1
, (, ] (13)
The point C may be viewed as the origin of a coordinate system whose axes have directions U
0
and U
1
. If
(x, y) is a 2-tuple in the coordinate system, the point in the original coordinate system is P = C+xU
0
+yU
1
,
6
in which case x = U
0
(PC) and y = U
1
(PC). For the parameterized ellipse, x = a cos and y = b sin,
so (x/a)
2
+(y/b)
2
= 1. Thus, the ellipse is axis-aligned in the coordinate system induced by C, U
0
, and U
1
.
The ellipses may also be written as quadratic equations,
s
0
+ s
1
x + s
2
y + s
3
x
2
+ s
4
xy + s
5
y
2
= 0
t
0
+ t
1
x + t
2
y + t
3
x
2
+ t
4
xy + t
5
y
2
= 0
(14)
where (x, y) is the 2-tuple version of P in Equation (12). This formulation is convenient for computing the
points of intersection of the ellipses; that is, the points are generated by solving simultaneously the two
quadratic equations.
The quadratic equations may be viewed as quadratic polynomials in x with coecients that depend on y,
Q
0
(x, y) = f(x) = (s
0
+ s
2
y + s
5
y
2
) + (s
1
+ s
4
y)x + (s
3
)x
2
=
0
+
1
x +
2
x
2
= 0
Q
1
(x, y) = g(x) = (t
0
+ t
2
t + t
5
y
2
) + (t
1
+ t
4
y)x + (t
3
)x
2
=
0
+
1
x +
2
x
2
= 0
(15)
The two polynomials f(x) and g(x) have a common root if and only if the Bezout determinant is zero,
(
2

1

1

2
)(
1

0

0

1
) (
2

0

0

2
)
2
= 0. (16)
This determinant is constructed by
0 =
2
g(x)
2
f(x) = (
2

1

1

2
)x + (
2

0

0

2
) (17)
and
0 =
1
f(x)
1
g(x) = (
2

1

1

2
)x
2
+ (
0

1

1

0
), (18)
Equation (17) is solved for x and substituted it into Equation (18) to produce Equation (16). When the
Bezout determinant is zero, the common root of f(x) and g(x) is
x =

2

0

0

2

2

1
.
The common root to f(x) = 0 and g(x) = 0 is obtained from the linear equation
2
g(x)
2
f(x) = 0 by
solving for x.
Equation (16) is a quartic polynomial in y, say,
B(y) = u
0
+ u
1
y + u
2
y
2
+ u
3
y
3
+ u
4
y
4
(19)
where
u
0
= d
31
d
10
d
2
30
u
1
= d
34
d
10
+ d
31
(d
40
+ d
12
) 2d
32
d
30
u
2
= d
34
(d
40
+ d
12
) + d
31
(d
42
d
51
) d
2
32
2d
35
d
30
u
3
= d
34
(d
42
d
51
) + d
31
d
45
2d
35
d
32
u
4
= d
34
d
45
d
2
35
(20)
where d
ij
= s
i
t
j
s
j
t
i
. For each y solving B( y) = 0 solve Q
0
(x, y) = 0 for up to two values x. Keep only
the valid solutions, those for which Q
0
( x, y) = 0 and Q
1
( x, y) = 0.
7
6 Area of Intersecting Ellipses
The quartic polynomial of Equation (19) has an even number of real-valued roots: 0, 2, or 4. However, these
can be repeated. In geometric terms, repeated real-valued roots correspond to intersection points where the
two ellipses are tangent. A distinct real-valued root corresponds to an intersection point where the ellipses
intersect transversely.
In the following discussion, the ellipses are named E
0
and E
1
. The general logic for the area computation is
shown next. The subsections after this pseudocode describe why the function is structured as it is.
real AreaOfIntersection (Ellipse E0, Ellipse E1)
{
Polynomial2 Q0 = E0.GetQuadraticRepresentation(); // Q0(x,y)
Polynomial2 Q1 = E0.GetQuadraticRepresentation(); // Q1(x,y)
Polynomial1 B = GetBezoutDeterminant(Q0, Q1); // B(y)
// Compute the roots of B. The input to ComputeRoots is B. The output numDistinctRoots is the number of distinct
// real-valued roots. The output root[] stores the distinct roots, where only array elements 0 through
// numDistinctRoots-1 are valid. The output multiplicity[] stores the number of times the roots occur. For a
// distinct root, the multiplicity is 1. For a repeated root, the multiplicity is 2.
int numDistinctRoots, multiplicity[4];
real root[4];
ComputeRoots(B, numDistinctRoots, root, multiplicity);
// Compute the intersection points. The points are ordered counterclockwise about their centroid.
Point2 intr[4];
ComputeIntersections(E0, E1, Q0, Q1, numDistinctRoots, root, multiplicity, intr);
if (numDistinctRoots == 0)
{
// Returns area(E0) [E0 is contained in E1], area(E1) [E1 is contained in E0], or zero [E0 and E1 are separated].
return AreaOfIntersectionCS(E0, E1);
}
else if (numDistinctRoots == 1) // multiplicity[0] must be 2.
{
return AreaOfIntersectionCS(E0, E1);
}
else if (numDistinctRoots == 2)
{
if (multiplicity[0] == 2) // Two roots, each repeated. multiplicity[1] must be 2.
{
return AreaOfIntersectionCS(E0, E1);
}
else // Two distinct roots. Region bounded by two arcs, one from each ellipse.
{
return AreaOfIntersection2(E0, E1, intr[0], intr[1]);
}
}
else if (numDistinctRoots == 3)
{
if (multiplicity[0] == 2)
{
return AreaOfIntersection2(E0, E1, intr[1], intr[2]);
}
else if (multiplicity[1] == 2)
{
return AreaOfIntersection2(E0, E1, intr[2], intr[0]);
}
else // multiplicity[2] == 2
{
return AreaOfIntersection2(E0, E1, intr[0], intr[1]);
}
}
else // numDistinctRoots == 4
{
return AreaOfIntersection4(E0, E1, intr);
}
}
8
The assumption is that E
0
and E
1
are represented as quadratic forms, as dened by Equation (12), and that
the quadratic polynomials of Equation (14) must be computed. Of course, you can store as much information
as you like in the Ellipse data structure to avoid having to compute various quantities at run time.
6.1 0 Intersection Points
One ellipse is contained strictly in the other, or the ellipses (as solids) are separated. Figure 6.1 illustrates.
Figure 6.1 Left: One ellipse is contained by the other. Right: The ellipses are separated.
In the case of containment, the area of intersection is the area of the smaller ellipse. In the case of separation,
the area of intersection is zero. The logic is
real AreaOfIntersectionCS (Ellipse E0, Ellipse E1)
{
if (E0.Contains(E1.center))
{
return Area(E1);
}
else if (E1.Contains(E0.center))
{
return Area(E0);
}
else
{
return 0;
}
}
6.2 1 Intersection Point
One ellipse is contained in the other but the two ellipses are tangent at the point of intersection, or the
ellipses (as solids) are separated except for a single point of tangency. Figure 6.2 illustrates.
9
Figure 6.2 Left: One ellipse is contained by the other but they are tangent at a single point. Right:
The ellipses are separated except for a single point of tangency. The intersection point is drawn as
a red dot.
The area of intersection is computed using the function AreaOfIntersectionCS that was described in the
subsection for 0 intersection points.
6.3 2 Intersection Points
One ellipse is contained in the other but the two ellipses are tangent at the point of intersection, or the
ellipses intersect at two distinct points. Figure 6.3 illustrates.
Figure 6.3 Left: One ellipse is contained by the other but they are tangent at two points. Right:
The ellipses intersect at two distinct points. The intersection points are drawn as red dots.
For the case shown in the left of the gure, the area of intersection is computed using the function
AreaOfIntersectionCS because one ellipse is contained in the other.
The more interesting case is shown in the right of the gure. The region of intersection is bounded by two
elliptical arcs, one from each ellipse. In the coordinate system induced by E
0
, the points of intersection are
P
j
= C
0
+ x
j
U
00
+ y
j
U
01
, j = 0, 1 (21)
10
where x
j
= a
0
cos
j
and y
j
= b
0
sin
j
. The area of the region bounded by the E
0
-arc and the line segment
connecting P
0
and P
1
is computed using either Equation (10) or Equation (11) depending on whether C
0
is outside or inside the region. The angles are counterclockwise ordered as
0
<
1
. The a and b in the area
equations are replaced by a
0
and b
0
.
In the coodinate system induced by E
1
, the points of intersection are
P
j
= C
1
+ x
j
U
10
+ y
j
U
11
, j = 0, 1 (22)
where x
j
= a
1
cos
j
and y
j
= b
1
sin
j
. The area of the region bounded by the E
1
-arc and the line segment
connecting P
0
and P
1
is computed using either Equation (10) or Equation (11) depending on whether C
1
is outside or inside the region. The angles are counterclockwise ordered as
0
<
1
. The a and b in the area
equations are replaced by a
1
and b
1
. The angles
j
replace the
j
in the formulas, but be careful to use the
correct order as the formulas require.
The function
real AreaOfIntersection2 (Ellipse E0, Ellipse E1, Point2 P0, Point P1);
computes the area of the subregion associated with P
0
, P
1
using ellipse E
0
. It also computes the area of
the subregion associated with P
1
, P
0
using ellipse E
1
. The returned result is the sum of the two areas.
6.4 3 Intersection Points
The two ellipses intersect tangentially at one point and transversely at two points. Figure 6.4 illustrates.
Figure 6.4 Ellipses that intersect in 3 points.
The point of tangency is somewhat irrelevant here. The region of intersection is still bounded by two elliptical
arcs, one from each ellipse, so the algorithm for 2 intersection points still applies. In the gure, P
2
is not
required in the area calculation.
11
6.5 4 Intersection Points
The two ellipses intersect transversely at four points. Figure 6.5 illustrates.
Figure 6.5 Ellipses that intersect in 4 points.
The region of intersection is the union of a convex quadrilateral and four special regions, each region bounded
by an elliptical arc and the line segment connecting the endpoints of the arc.
The function
real AreaOfIntersection4 (Ellipse E0, Ellipse E1, Point2 P[4]);
computes the area of the subregion associated with P
0
, P
1
and the area of the subregion associated with
P
2
, P
3
. Ellipse E
1
is used for these area calculations. Similarly, the function computes the area of the
subregion associated with P
1
, P
2
and the area of the subregion associated with P
3
, P
0
. Ellipse E
0
is used
for these area calculations. The area of the quadrilateral is computed as the sum of areas of two triangles,
P
0
, P
1
, P
2
and P
3
, P
0
, P
2
.
12

You might also like