def getDescendingAreaLoops(allPoints, corners, importRadius):
 centers = intercircle.getCentersFromPoints(allPoints, importRadius)
 descendingAreaLoops = []
 loops = getLoopsInOrderOfArea(compareAreaDescending, centers)
 pointDictionary = {}
 for loop in loops:
  if ((len(loop) > 2) and (getOverlapRatio(loop, pointDictionary) < 0.1)):
   intercircle.directLoop((not euclidean.getIsInFilledRegion(descendingAreaLoops, loop[0])), loop)
   descendingAreaLoops.append(loop)
   addLoopToPointTable(loop, pointDictionary)
 descendingAreaLoops = euclidean.getSimplifiedLoops(descendingAreaLoops, importRadius)
 return getLoopsWithCorners(corners, importRadius, descendingAreaLoops, pointDictionary)

def getDescendingAreaLoops ( allPoints , corners , importRadius ) : centers = intercircle . getCentersFromPoints ( allPoints , importRadius ) descendingAreaLoops = [ ] loops = getLoopsInOrderOfArea ( compareAreaDescending , centers ) pointDictionary = { } for loop in loops : if ( ( len ( loop ) > 2 ) and ( getOverlapRatio ( loop , pointDictionary ) < 0.1 ) ) : intercircle . directLoop ( ( not euclidean . getIsInFilledRegion ( descendingAreaLoops , loop [ 0 ] ) ) , loop ) descendingAreaLoops . append ( loop ) addLoopToPointTable ( loop , pointDictionary ) descendingAreaLoops = euclidean . getSimplifiedLoops ( descendingAreaLoops , importRadius ) return getLoopsWithCorners ( corners , importRadius , descendingAreaLoops , pointDictionary )
get descending area loops which include most of the points .