question: private Hashtable < IPoint , List < ICircle > > filter ( Hashtable < IPoint , ICircle [ ] > circleIntersections ) { Hashtable < IPoint , List < ICircle > > real = new Hashtable < IPoint , List < ICircle > > ( ) ; for ( IPoint pt : circleIntersections . keySet ( ) ) { ICircle [ ] circs = circleIntersections . get ( pt ) ; for ( int i = 0 ; i < circs . length - 1 ; i ++ ) { for ( int j = i + 1 ; j < circs . length ; j ++ ) { IPoint [ ] pts = intersects ( circs [ i ] , circs [ j ] ) ; if ( pts != null ) { for ( IPoint p : pts ) { report ( real , p , circs [ i ] , circs [ j ] ) ; } } } } } return real ; }
target:  This method implements the algebraic intersection detection method to determine whether the circles are actually intersecting. Some false positives may occur, and thus must be filtered out.