The Area of Intersecting Ellipses

Similar documents
Largest Fixed-Aspect, Axis-Aligned Rectangle

Circle Name: Radius: Diameter: Chord: Secant:

Mark Howell Gonzaga High School, Washington, D.C.

Additional Topics in Math

Solutions to Homework 10

Curriculum Map by Block Geometry Mapping for Math Block Testing August 20 to August 24 Review concepts from previous grades.

5.3 SOLVING TRIGONOMETRIC EQUATIONS. Copyright Cengage Learning. All rights reserved.

PROBLEM SET. Practice Problems for Exam #1. Math 1352, Fall Oct. 1, 2004 ANSWERS

ab = c a If the coefficients a,b and c are real then either α and β are real or α and β are complex conjugates

Solutions to Exercises, Section 5.1

Fundamental Theorems of Vector Calculus

AP CALCULUS AB 2008 SCORING GUIDELINES

We can display an object on a monitor screen in three different computer-model forms: Wireframe model Surface Model Solid model

MATH 132: CALCULUS II SYLLABUS

13.4 THE CROSS PRODUCT

Trigonometric Functions: The Unit Circle

CIRCLE COORDINATE GEOMETRY

Biggar High School Mathematics Department. National 5 Learning Intentions & Success Criteria: Assessing My Progress

Practice Final Math 122 Spring 12 Instructor: Jeff Lang

Triangulation by Ear Clipping

South Carolina College- and Career-Ready (SCCCR) Pre-Calculus

THE COMPLEX EXPONENTIAL FUNCTION

Gymnázium, Brno, Slovanské nám. 7, SCHEME OF WORK Mathematics SCHEME OF WORK. cz

Section 9.1 Vectors in Two Dimensions

Essential Mathematics for Computer Graphics fast

Conjectures. Chapter 2. Chapter 3

Definitions, Postulates and Theorems

Chapter 6 Notes: Circles

13. Write the decimal approximation of 9,000,001 9,000,000, rounded to three significant

A vector is a directed line segment used to represent a vector quantity.

Dear Accelerated Pre-Calculus Student:

SAT Subject Math Level 2 Facts & Formulas

88 CHAPTER 2. VECTOR FUNCTIONS. . First, we need to compute T (s). a By definition, r (s) T (s) = 1 a sin s a. sin s a, cos s a

Chapters 6 and 7 Notes: Circles, Locus and Concurrence

Math 1B, lecture 5: area and volume

PYTHAGOREAN TRIPLES KEITH CONRAD

Estimated Pre Calculus Pacing Timeline

Week 13 Trigonometric Form of Complex Numbers

With the Tan function, you can calculate the angle of a triangle with one corner of 90 degrees, when the smallest sides of the triangle are given:

Parametric Equations and the Parabola (Extension 1)

National 5 Mathematics Course Assessment Specification (C747 75)

Triangle Trigonometry and Circles

11 th Annual Harvard-MIT Mathematics Tournament

Angles and Quadrants. Angle Relationships and Degree Measurement. Chapter 7: Trigonometry

MAC Learning Objectives. Module 10. Polar Form of Complex Numbers. There are two major topics in this module:

Trigonometric Functions and Triangles

Review of Fundamental Mathematics

10 Polar Coordinates, Parametric Equations

Parallel and Perpendicular. We show a small box in one of the angles to show that the lines are perpendicular.

Designing and Drawing a Sprocket Visualizing ideas through the creation of CAD solid models is a key engineering skill.

Mathematics Pre-Test Sample Questions A. { 11, 7} B. { 7,0,7} C. { 7, 7} D. { 11, 11}

Algebra 2 Chapter 1 Vocabulary. identity - A statement that equates two equivalent expressions.

Solutions to Practice Problems

Precalculus REVERSE CORRELATION. Content Expectations for. Precalculus. Michigan CONTENT EXPECTATIONS FOR PRECALCULUS CHAPTER/LESSON TITLES

Trigonometry Review with the Unit Circle: All the trig. you ll ever need to know in Calculus

Content. Chapter 4 Functions Basic concepts on real functions 62. Credits 11

NEW YORK STATE TEACHER CERTIFICATION EXAMINATIONS

Geometric Transformations

Parametric Curves. (Com S 477/577 Notes) Yan-Bin Jia. Oct 8, 2015

alternate interior angles

Angles that are between parallel lines, but on opposite sides of a transversal.

HIGH SCHOOL: GEOMETRY (Page 1 of 4)

Computing Orthonormal Sets in 2D, 3D, and 4D

Georgia Department of Education Kathy Cox, State Superintendent of Schools 7/19/2005 All Rights Reserved 1

The Two-Body Problem

6.1 Basic Right Triangle Trigonometry

Figure 2.1: Center of mass of four points.

Section 1.1. Introduction to R n

AP Calculus AB 2011 Scoring Guidelines

56 questions (multiple choice, check all that apply, and fill in the blank) The exam is worth 224 points.

Lecture 8 : Coordinate Geometry. The coordinate plane The points on a line can be referenced if we choose an origin and a unit of 20

Conjectures for Geometry for Math 70 By I. L. Tse

MATH BOOK OF PROBLEMS SERIES. New from Pearson Custom Publishing!

Trigonometry Hard Problems

Unit 6 Trigonometric Identities, Equations, and Applications

Unit 3: Circles and Volume

Geometry Enduring Understandings Students will understand 1. that all circles are similar.

Geometry of Vectors. 1 Cartesian Coordinates. Carlo Tomasi

New Higher-Proposed Order-Combined Approach. Block 1. Lines 1.1 App. Vectors 1.4 EF. Quadratics 1.1 RC. Polynomials 1.1 RC

Rotated Ellipses. And Their Intersections With Lines. Mark C. Hendricks, Ph.D. Copyright March 8, 2012

Contents. 2 Lines and Circles Cartesian Coordinates Distance and Midpoint Formulas Lines Circles...

3 Contour integrals and Cauchy s Theorem

TOPIC 4: DERIVATIVES

In order to describe motion you need to describe the following properties.

Sample Problems. Practice Problems

The Math Circle, Spring 2004

COMPLEX NUMBERS. a bi c di a c b d i. a bi c di a c b d i For instance, 1 i 4 7i i 5 6i

Figure 1.1 Vector A and Vector F

North Carolina Math 2

Cabri Geometry Application User Guide

Geometry Course Summary Department: Math. Semester 1

GEOMETRY. Constructions OBJECTIVE #: G.CO.12

Datum > Curve KIM,ME,NIU

ALGEBRA 2/TRIGONOMETRY

Two vectors are equal if they have the same length and direction. They do not

cos Newington College HSC Mathematics Ext 1 Trial Examination 2011 QUESTION ONE (12 Marks) (b) Find the exact value of if

Extra Credit Assignment Lesson plan. The following assignment is optional and can be completed to receive up to 5 points on a previously taken exam.

PRE-CALCULUS GRADE 12

Section 1: How will you be tested? This section will give you information about the different types of examination papers that are available.

Transcription:

The Area of Intersecting Ellipses David Eberly Geometric Tools, LLC http://www.geometrictools.com/ Copyright c 1998-2016. All Rights Reserved. Created: September 4, 2008 Last Modified: November 26, 2016 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 4 5 Area of Intersecting Ellipses 5 5.1 No Intersection Points........................................ 5 5.2 One Intersection Point........................................ 7 5.3 Two Intersection Points....................................... 7 5.4 Three Intersection Points...................................... 9 5.5 Four Intersection Points....................................... 10 5.6 An Implementation.......................................... 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-off 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. Computing the intersection points is described in lengthy detail in Intersection of Ellipses. 2 Area of an Ellipse An axis-aligned ellipse centered at the origin is ( x ) 2 ( y ) 2 + = 1 (1) a b where I assume that a > b, in which case the major axis is along the x-axis. Figure 1 shows such an ellipse. Figure 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 first quadrant, A = 4 a y dx = 4 a 0 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 differential is dx = a sin φ dφ and the area is A = 4 a 0 b 1 (x/a) 2 dx = 4b 0 sin φ( a sin φ dφ) π/2 = 4ab π/2 sin 2 φ dφ 0 = 2ab π/2 (1 cos(2φ)) dφ 0 = 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 with θ 0 < θ 1. 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 2 shows an elliptical arc and the corresponding elliptical sector. Figure 2. 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 1 θ1 θ 0 2 r2 dθ = θ 0 ( a 2 b 2 /2 ) dθ b 2 cos 2 θ + a 2 sin 2 θ (5) 3

An antiderivative of the integrand is F (θ) = ab 2 ( )] [θ Tan 1 (b a) sin 2θ (b + a) + (b a) cos 2θ (6) where Tan 1 (z) is the principal branch of the inverse tangent function whose range is ( π/2, π/2). The area of the elliptical sector is therefore A(θ 0, θ 1 ) = F (θ 1 ) F (θ 0 ) (7) 4 Area Bounded by a Line Segment and an Elliptical Arc Figure 3 shows the region bounded by an elliptical arc and the line segment connecting the arc s endpoints. Figure 3. The region bounded by an elliptical arc and the line segment connecting the arc s 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 ) = (r 0 cos θ 0, r 0 sin θ 0 ) and (x 1, y 1 ) = (r 1 cos θ 1, r 1 sin θ 1 ), where θ i are the polar angles to the points and where r i are determined using Equation (4). The triangle area is 1 2 x 1y 0 x 0 y 1 = r 0r 1 2 cos θ 1 sin θ 0 cos θ 0 sin θ 1 = r 0r 1 2 sin(θ 1 θ 0 ) (8) In an implementation it is sufficient to use x 1 y 0 x 0 y 1 /2 rather than compute the right-hand side of Equation (8). If α(θ 0, θ 1 ) denotes the area of the aforementioned region, then α(θ 0, θ 1 ) = A(θ 0, θ 1 ) 1 2 x 1y 0 x 0 y 1 (9) where A(θ 0, θ 1 ) is the area of the sector as defined in Equation (7) and the other term on the right-hand side is the area of the triangle. 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 illustrates. 4

Figure 4. The other region bounded by an elliptical arc and the line segment connecting the arc s endpoints. The area of this region is α(θ 1, θ 0 + 2π) = πab α(θ 0, θ 1 ) (10) 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 (9), the origin is outside the bounded region. In Equation (10), the origin is inside the bounded region. 5 Area of Intersecting Ellipses We need to compute the points of intersection between two ellipses, including classification whether the intersections are transverse or tangential. A robust algorithm for this is described in Intersection of Ellipses, and the implementation is in the file GteIntrEllipse2Ellipse2.h. In the following discussion, the ellipses are named E 0 and E 1. The subsections describe each geometric configuration that can arise. 5.1 No Intersection Points One ellipse is contained strictly in the other, or the ellipses (as solids) are separated. Figure 5 illustrates. 5

Figure 5. 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 shown in Listing 1. Listing 1. The area computation when the ellipses are separated, one contains the other, or one is outside the other but just touching the other. Real AreaCS ( E l l i p s e E0, E l l i p s e E1, i n t numpoints ) i f ( numpoints <= 1) Vector2<Real> d i f f = E0. c e n t e r E1. c e n t e r ; Real qform0 = Dot ( d i f f, E0.M d i f f ) ; Real qform1 = Dot ( d i f f, E1.M d i f f ) ; i f ( qform0 > 1 && qform1 > 1) // Each e l l i p s e c e n t e r i s o u t s i d e t h e o t h e r e l l i p s e, so t h e // e l l i p s e s a r e s e p a r a t e d ( numpoints == 0) o r o u t s i d e each // o t h e r and j u s t t o u c h i n g ( numpoints == 1 ). r e t u r n 0 ; // One e l l i p s e i s i n s i d e t h e o t h e r. Determine t h i s i n d i r e c t l y by // comparing a r e a s. Real p r o d u c t 0 = E0. e x t e n t [ 0 ] E0. e x t e n t [ 1 ] ; Real p r o d u c t 1 = E1. e x t e n t [ 0 ] E1. e x t e n t [ 1 ] ; i f ( p r o d u c t 0 < p r o d u c t 1 ) // E1 c o n t a i n s E0 r e t u r n p i p r o d u c t 0 ; r e t u r n p i p r o d u c t 1 ; // I n our i m p l e m e n t a t i o n, we s e t numpoints to INT MAX f o r t h i s c a s e. // The e l l i p s e s a r e t h e same. r e t u r n p i E0. e x t e n t [ 0 ] E0. e x t e n t [ 1 ] ; 6

5.2 One 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 illustrates. Figure 6. 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 AreaCS of Listing 1. 5.3 Two Intersection Points Two possible configurations are possible. Either 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 7 illustrates. Figure 7. 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 figure, the area of intersection is computed using the function AreaCS because one ellipse is contained in the other. The other case is shown in the right of the figure. The region of intersection is bounded by two elliptical arcs, one from each ellipse. We must compute the areas bounded by the chord connecting the arc endpoints, 7

one for ellipse E 0 and one for ellipse E 1. Observe that the chord partitions an ellipse into two subsets. We need to decide which subset is the one for which we need to compute the area. This is determined by the ordering of the two points of intersection. In Figure 7, notice that at P 0, the tangent vector pointing in the direction of the counterclockwise traversal of E 0 can be used to decide that we compute the area between the ordered chord P 0, P 1 and the E 0 -arc above it. Ellipse E 1 has the opposite property. The tangent pointing in the direction of the counterclockwise traversal of E 1 points outside E 1, so the ordered chord is P 1, P 0 and we compute the area between it and the E 1 -arc below it. The ordering therefore relies solely on computing the sign of the dot-perp of tangents, or equivalently computing the sign of the dot-perp of normals (which are provided by the gradients of the quadratic polynomials defining the ellipses). Listing 2 is the pseudocode for computing the area for the right-most configuration of Figure 7. Listing 2. Pseudocode for computing the area of intersection when there are two distinct points of intersection. The code is shared by the 3-point intersection case, so the last two parameters are indices of the proper 2 points to use in the array of intersection points. Real Area2 ( E l l i p s e E0, E l l i p s e E1, i n t i0, i n t i1, Vector2<Real> p o i n t s [ 4 ] ) // The e n d p o i n t s o f t h e chord. Vector2<Real> P0 = p o i n t s [ i 0 ], P1 = p o i n t s [ i 1 ] ; // Compute l o c a t i o n s r e l a t i v e to t h e e l l i p s e s. Vector2<Real> P0mC0 = P0 E0. c e n t e r, P0mC1 = P0 E1. c e n t e r ; Vector2<Real> P1mC0 = P1 E0. c e n t e r, P1mC1 = P1 E1. c e n t e r ; // Compute t h e e l l i p s e normal v e c t o r s a t e n d p o i n t P0. This i s s u f f i c i e n t // i n f o r m a t i o n to d e t e r m i n e chord e n d p o i n t o r d e r. The m a t r i c e s M a r e // from the standard form, (X C)ˆT M (X C) = 1. Vector2<Real> N0 = E0.M P0mC0, N1 = E1.M P0mC1 ; Real dotperp = DotPerp (N1, N0 ) ; // Choose t h e e n d p o i n t o r d e r f o r t h e chord r e g i o n a s s o c i a t e d w i t h E0. i f ( d o t p e r p > 0) // The chord o r d e r f o r E0 i s <P0, P1> and f o r E1 i s <P1, P0>. r e t u r n ComputeAreaChordRegion ( E0, P0mC0, P1mC0) + ComputeAreaChordRegion ( E1, P1mC1, P0mC1 ) ; // The chord o r d e r f o r E0 i s <P1, P0> and f o r E1 i s <P0, P1>. r e t u r n ComputeAreaChordRegion ( E0, P1mC0, P0mC0) + ComputeAreaChordRegion ( E1, P0mC1, P1mC1 ) ; The function ComputeAreaChordRegion is an implementation of the algorithm described in Section 4. Listing 3 is pseudocode for this method. 8

Listing 3. Pseudocode for computing the area bounded by an elliptical arc and the chord that connects the endpoints of the arc. Real ComputeAreaChordRegion ( E l l i p s e E, Vector2<Real> P0mC, Vector2<Real> P1mC) // Compute p o l a r c o o r d i n a t e s f o r P0 and P1 on t h e e l l i p s e. Real x0 = Dot (E. a x i s [ 0 ], P0mC ) ; Real y0 = Dot (E. a x i s [ 1 ], P0mC ) ; Real t h e t a 0 = atan2 ( y0, x0 ) ; Real x1 = Dot (E. a x i s [ 0 ], P1mC ) ; Real y1 = Dot (E. a x i s [ 1 ], P1mC ) ; Real t h e t a 1 = atan2 ( y1, x1 ) ; // The a r c s t r a d d l e s t h e atan2 d i s c o n t i n u i t y on t h e n e g a t i v e x a x i s. Wrap // t h e second a n g l e to be l a r g e r than t h e f i r s t a n g l e. i f ( t h e t a 1 < t h e t a 0 ) t h e t a 1 += twopi ; // Compute t h e a r e a p o r t i o n o f t h e s e c t o r due to t h e t r i a n g l e. Real t r i A r e a = f a b s ( DotPerp (P0mC, P1mC) ) / 2 ; // Compute t h e chord r e g i o n a r e a. Real dtheta = theta1 theta0 ; Real F0, F1, s e c t o r A r e a ; i f ( d t h e t a <= p i ) // Use t h e a r e a f o r m u l a d i r e c t l y. // a r e a ( theta0, t h e t a 1 ) = F ( t h e t a 1 ) F ( t h e t a 0 ) a r e a ( t r i a n g l e ) F0 = ComputeIntegral (E, theta0 ) ; F1 = ComputeIntegral (E, theta1 ) ; s e c t o r A r e a = F1 F0 ; r e t u r n s e c t o r A r e a t r i A r e a ; // The a n g l e o f t h e e l l i p t i c a l s e c t o r i s l a r g e r than p i r a d i a n s. // Use t h e a r e a f o r m u l a // area ( theta0, theta1 ) = p i a b area ( theta1, theta0 ) t h e t a 0 += twopi ; // e n s u r e t h e t a 0 > t h e t a 1 F0 = ComputeIntegral (E, theta0 ) ; F1 = ComputeIntegral (E, theta1 ) ; s e c t o r A r e a = F0 F1 ; r e t u r n p i E. e x t e n t [ 0 ] E. e x t e n t [ 1 ] ( s e c t o r A r e a t r i A r e a ) ; Real C o m p u t e I n t e g r a l ( E l l i p s e E, Re al t h e t a ) Real twotheta = 2 t h e t a, sn = s i n ( twotheta ), c s = c o s ( twotheta ) ; Real halfab = E. e x t e n t [ 0 ] E. e x t e n t [ 1 ] / 2 ; Real BpA = E. e x t e n t [ 1 ] + E. e x t e n t [ 0 ] ; Real BmA = E. e x t e n t [ 1 ] E. e x t e n t [ 0 ] ; Real arg = BmA sn / (BpA + BmA cs ) ; r e t u r n halfab ( t h e t a atan ( a r g ) ) ; 5.4 Three Intersection Points The two ellipses intersect tangentially at one point and transversely at two points. Figure 8 illustrates. 9

Figure 8. Ellipses that intersect in 3 points. The point of tangency is 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 figure, P 2 is not required in the area calculation. However, it is required to know which 2 of the 3 intersections are the endpoints of the chord of interest. 5.5 Four Intersection Points The two ellipses intersect transversely at four points. Figure 9 illustrates. Figure 9. Ellipses that intersect in 4 points. The region of intersection is the union of a convex quadrilateral and four chord regions, each region bounded by an elliptical arc and the line segment connecting the endpoints of the arc. The key observations are (1) we need an ordering of the quadrilateral vertices for each ellipse [the code uses counterclockwise] and (2) to compute the areas is that we need to know which elliptical arc to use for an ordered chord. The ordering is obtained by computing polar coordinates for the points relative to the ellipse. The dot-perp concept used for the function Area2 allows us to identify the correct arc to use. Pseudocode for the function that computes the area of intersection is shown in Listing 4. 10

Listing 4. intersection. Pseudocode for computing the area of intersection of ellipses when there are 4 points of Real Area4 ( E l l i p s e E0, E l l i p s e E1, Vector2<Real> p o i n t s [ 4 ] ) // S e l e c t a c o u n t e r c l o c k w i s e o r d e r i n g o f t h e p o i n t s o f i n t e r s e c t i o n. Use // t h e p o l a r c o o r d i n a t e s f o r E0 to do t h i s. The multimap i s used i n t h e // e v e n t t h a t computing t h e i n t e r s e c t i o n s i n v o l v e d n u m e r i c a l r o u n d i n g // e r r o r s t h a t l e a d to a d u p l i c a t e i n t e r s e c t i o n, even though t h e // i n t e r s e c t i o n s a r e a l l l a b e l e d as t r a n s v e r s e. [ See t h e comment i n t h e // GTEngine f u n c t i o n S p e c i a l I n t e r s e c t i o n. ] multimap<real, i n t > o r d e r i n g ; i n t i ; f o r ( i = 0 ; i < 4 ; ++i ) Vector2<Real> PmC = p o i n t s [ i ] E0. c e n t e r ; Real x = Dot ( E0. a x i s [ 0 ], PmC) ; Real y = Dot ( E0. a x i s [ 1 ], PmC) ; Real t h e t a = atan2 ( y, x ) ; o r d e r i n g. i n s e r t ( m a k e p a i r ( t h e t a, i ) ) ; array <int, 4> permute ; i = 0 ; f o r e a c h ( e l e m e n t i n o r d e r i n g ) permute [ i ++] = e l e m e n t. second ; // S t a r t w i t h t h e a r e a o f t h e convex q u a d r i l a t e r a l. Vector2<Real> d i a g 2 0 = p o i n t s [ permute [ 2 ] ] p o i n t s [ permute [ 0 ] ] ; Vector2<Real> d i a g 3 1 = p o i n t s [ permute [ 3 ] ] p o i n t s [ permute [ 1 ] ] ; Real a r e a = f a b s ( DotPerp ( diag20, d i a g 3 1 ) ) / 2 ; // V i s i t each p a i r o f c o n s e c u t i v e p o i n t s. The s e l e c t i o n o f e l l i p s e f o r // t h e chord r e g i o n a r e a c a l c u l a t i o n u s e s t h e most c o u n t e r c l o c k w i s e // t a n g e n t v e c t o r. f o r ( i n t i 0 = 3, i 1 = 0 ; i 1 < 4 ; i 0 = i 1 ++) // Get a p a i r o f c o n s e c u t i v e p o i n t s. Vector2<Real> P0 = p o i n t s [ permute [ i 0 ] ] ; Vector2<Real> P1 = p o i n t s [ permute [ i 1 ] ] ; // Compute l o c a t i o n s r e l a t i v e to t h e e l l i p s e s. Vector2<Real> P0mC0 = P0 E0. c e n t e r, P0mC1 = P0 E1. c e n t e r ; Vector2<Real> P1mC0 = P1 E0. c e n t e r, P1mC1 = P1 E1. c e n t e r ; // Compute t h e e l l i p s e normal v e c t o r s a t e n d p o i n t P0. The m a t r i c e s // M are from the standard form, (X C)ˆT M (X C) = 1. Vector2<Real> N0 = E0.M P0mC0, N1 = E1.M P0mC1 ; Real dotperp = DotPerp (N1, N0 ) ; i f ( d o t p e r p > 0) // The chord goes w i t h e l l i p s e E0. area += ComputeAreaChordRegion ( E0, P0mC0, P1mC0 ) ; // The chord goes w i t h e l l i p s e E1. area += ComputeAreaChordRegion ( E1, P0mC1, P1mC1 ) ; r e t u r n a r e a ; 11

5.6 An Implementation The general logic for the area computation is shown in Listing 5 and is based on the discussions in the previous subsections. Listing 5. The top-level dispatch function for computing the area of intersection of two ellipses. The points of intersection are computed first, including whether each is transverse or tangential. The dispatcher calls the correct function for each geometrically distinct case. Real A r e a O f I n t e r s e c t i o n ( E l l i p s e E0, E l l i p s e E1 ) // Each p a i r ( p o i n t s [ i ], i s T r a n s v e r s e [ i ] ) s t o r e s t h e p o i n t o f i n t e r s e c t i o n // and a Boolean v a l u e t h a t i s t r u e when t h e i n t e r s e c t i o n i s t r a n s v e r s e // but f a l s e when t h e i n t e r s e c t i o n i s t a n g e n t i a l. Vector2<Real> p o i n t s [ 4 ] ; b o o l i s T r a n s v e r s e [ 4 ] ; i n t numpoints ; F i n d I n t e r s e c t i o n s ( E0, E1, numpoints, p o i n t s, i s T r a n s v e r s e ) ; i f ( numpoints > 0) i f ( numpoints == 1) // Containment o r s e p a r a t i o n. r e t u r n AreaCS ( E0, E1, numpoints ) ; i f ( numpoints == 2) i f ( i s T r a n s v e r s e [ 0 ] ) // Both i n t e r s e c t i o n p o i n t s a r e t r a n s v e r s e. r e t u r n Area2 ( E0, E1, 0, 1, p o i n t s ) ; // Both i n t e r s e c t i o n p o i n t s a r e t a n g e n t i a l, so one e l l i p s e // i s c o n t a i n e d i n t h e o t h e r. r e t u r n AreaCS ( E0, E1, numpoints ) ; i f ( numpoints == 3) // The t a n g e n t i a l i n t e r s e c t i o n i s i r r e l e v a n t i n t h e a r e a computation. i f (! i s T r a n s v e r s e [ 0 ] ) r e t u r n Area2 ( E0, E1, 1, 2, p o i n t s ) ; i f (! i s T r a n s v e r s e [ 1 ] ) r e t u r n Area2 ( E0, E1, 2, 0, p o i n t s ) ; // i s T r a n s v e r s e [ 2 ] == f a l s e r e t u r n Area2 ( E0, E1, 0, 1, p o i n t s ) ; // numpoints == 4 r e t u r n Area4 ( E0, E1, p o i n t s ) ; // Containment, s e p a r a t i o n, o r same e l l i p s e. r e t u r n AreaCS ( E0, E1, numpoints ) ; 12

13