int ComparePolar(Point a, Point b, bool isDescending = false)
{
var polarA = RectToPolar(a);
var polarB = RectToPolar(b);
var center = RectToPolar(location);
var radiusADist = polarA.X - location.X;
var radiusBDist = polarB.X - location.X;
var angleA = (180 * (polarA.Y - location.Y)) / Math.PI;
var angleB = (180 * (polarB.Y - location.Y)) / Math.PI;
if (angleA < 0)
angleA += 360;
if (angleB < 0)
angleB += 360;
if (radiusADist > radiusBDist)
return isDescending ? -1 : 1;
else if (radiusADist < radiusBDist)
return isDescending ? 1 : -1;
if (angleA > angleB)
return isDescending ? -1 : 1;
else if (angleA < angleB)
return isDescending ? 1 : -1;
return 0;
}